JIRA REST Java Client를 사용하는 프로젝트가 있습니다. Spring Boot와 통합 할 때까지는 아무 문제가 없었다. 그 이후로 나는 createWithBasicHttpAuthentication
을 AsynchronousJiraRestClientFactory
에서 오류없이 호출 할 수 없습니다. 내가 얻을 : Maven - 여러 버전의 종속성을 사용하는 방법?
ClassNotFoundException: org.apache.http.util.Args
그래서 나는 나의
pom.xml
에
HttpComponents Core blocking I/O(httpcore)
의존성을 추가,하지만 난 그 후 나는
pom.xml
에
HttpComponents Core non-blocking I/O(httpcore-nio)
를 추가로 해결
ClassNotFoundException: org.apache.http.nio.NHttpMessageParserFactory
을 얻었다. 지금은이 주석 때 프로젝트가 봄 부팅 부모가 때 나는
dependency:tree
을 비교 한
NoSuchMethodError: org.apache.http.nio.client.HttpAsyncClient.start()V
있습니다. 스프링 부트 부모를 추가하면 내 의존성 버전이 변경된다는 것을 알게되었습니다. 당신은 (봄 부팅과 오른쪽, 봄 부팅없이 왼쪽) DIFF here이
JIRA REST 자바 클라이언트가 어떤 의존성의 이전 버전을 필요 보인다 확인할 수 있습니다. 이 문제를 어떻게 해결할 수 있습니까?
의 pom.xml
...
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>1.0.0.RELEASE</version>
</parent>
...
<dependencies>
<dependency>
<groupId>com.atlassian.jira</groupId>
<artifactId>jira-rest-java-client-core</artifactId>
<version>RELEASE</version>
</dependency>
<dependency>
<groupId>org.apache.httpcomponents</groupId>
<artifactId>httpcore</artifactId>
<version>4.3.2</version>
</dependency>
<dependency>
<groupId>org.apache.httpcomponents</groupId>
<artifactId>httpcore-nio</artifactId>
<version>4.3</version>
</dependency>
</dependencies>
...
상당히 오래된 라이브러리 버전을 사용하고있는 것처럼 분명합니다. 왜 com.atlassian 버전을 업그레이드하려고하지 않겠습니까? 추가 한 종속성을 추가하면 제대로 작동하지만, 무엇이 잘못 되었습니까? –
다른 버전에서 동일한 종속성을 2 번 사용하는 방법은 없습니다 (가능한 경우 Java가 사용할 버전은 무엇입니까 ??) 자신의 경우에 맞는 종속성 버전을 찾아야합니다. –
당신은 약간 운명이있는 것 같습니다. 메이븐 (Maven)은 일종의 거리로 의존성을 해결합니다. 따라서 pom에 올바른 버전을 추가하면 거리가 1이고 모든 전 이적 종속성 (동일한 groupId, artifactId)이 더 큰 거리를 갖습니다. 그래서 당신의 버전에 의존성을 pom에 추가하면 항상 승리 할 것입니다. 그러나 어떤 다른 의존성이 새로운 버전을 요구한다면, 업그레이드하는 것보다 다른 방법은 없습니다. 결국 모든 클래스에 동일한 클래스 로더가로드되면 동일한 클래스의 두 가지 버전을 사용할 수 없습니다. – wemu