2014-10-23 5 views
2

JIRA REST Java Client를 사용하는 프로젝트가 있습니다. Spring Boot와 통합 할 때까지는 아무 문제가 없었다. 그 이후로 나는 createWithBasicHttpAuthenticationAsynchronousJiraRestClientFactory에서 오류없이 호출 할 수 없습니다. 내가 얻을 : Maven - 여러 버전의 종속성을 사용하는 방법?

ClassNotFoundException: org.apache.http.util.Args 

그래서 나는 나의 pom.xmlHttpComponents Core blocking I/O(httpcore) 의존성을 추가,하지만 난 그 후 나는 pom.xmlHttpComponents 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> 

... 
+0

상당히 오래된 라이브러리 버전을 사용하고있는 것처럼 분명합니다. 왜 com.atlassian 버전을 업그레이드하려고하지 않겠습니까? 추가 한 종속성을 추가하면 제대로 작동하지만, 무엇이 잘못 되었습니까? –

+0

다른 버전에서 동일한 종속성을 2 번 사용하는 방법은 없습니다 (가능한 경우 Java가 사용할 버전은 무엇입니까 ??) 자신의 경우에 맞는 종속성 버전을 찾아야합니다. –

+1

당신은 약간 운명이있는 것 같습니다. 메이븐 (Maven)은 일종의 거리로 의존성을 해결합니다. 따라서 pom에 올바른 버전을 추가하면 거리가 1이고 모든 전 이적 종속성 (동일한 groupId, artifactId)이 더 큰 거리를 갖습니다. 그래서 당신의 버전에 의존성을 pom에 추가하면 항상 승리 할 것입니다. 그러나 어떤 다른 의존성이 새로운 버전을 요구한다면, 업그레이드하는 것보다 다른 방법은 없습니다. 결국 모든 클래스에 동일한 클래스 로더가로드되면 동일한 클래스의 두 가지 버전을 사용할 수 없습니다. – wemu

답변

2

본인은있을 수 있다는 것을 내 pom.xml 파일에

<properties> 
    <httpasyncclient.version>4.0-beta3-atlassian-1</httpasyncclient.version> 
    <httpclient.version>4.2.1-atlassian-2</httpclient.version> 
</properties> 

참고 이러한 속성을 재정 의하여 나의 봄 부팅 응용 프로그램에서 런타임 문제를 해결 할 수 있었다 프로젝트에서 http-client 및/또는 httpassync 클라이언트를 사용하기로 결정한 경우 (예 : RestTemplate 사용).

Atlassian은 확실히 종속성을 업그레이드해야합니다.

관련 문제