我有使用JIRA REST Java客户端的项目.在我尝试将其与Spring Boot集成之前,它一直运行良好.从那以后,我将无法正确地从AsynchronousJiraRestClientFactory调用createWithBasicHttpAuthentication.我得到:
ClassNotFoundException: org.apache.http.util.Args
所以我在pom.xml中添加了HttpComponents Core阻止I / O(httpcore)依赖关系,但后来我得到了
ClassNotFoundException: org.apache.http.nio.NHttpMessageParserFactory
我通过将HttpComponents Core非阻塞I / O(httpcore-nio)添加到pom.xml来解决.我现在有
NoSuchMethodError: org.apache.http.nio.client.HttpAsyncClient.start()V
我已经比较了当项目具有spring boot父项以及被注释掉时的dependency:tree.它向我展示了添加spring boot parent会更改我的依赖项的版本.您可以检查diff here(左侧不带弹簧靴,右侧带弹簧靴)
似乎JIRA REST Java Client需要某些依赖项的较旧版本.
我怎么解决这个问题?
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>
...
解决方法:
我可以通过覆盖pom.xml中的这些属性来修复Spring Boot应用程序中的运行时
<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应该绝对升级依赖项.