我有使用JIRA REST Java Client的项目。它工作正常,直到我尝试将其与Spring Boot集成。因为我无法在没有错误的情况下从createWithBasicHttpAuthentication
调用AsynchronousJiraRestClientFactory
。我明白了:
ClassNotFoundException: org.apache.http.util.Args
所以我将HttpComponents Core blocking I/O(httpcore)
依赖项添加到我的pom.xml
,但之后我得到了
ClassNotFoundException: org.apache.http.nio.NHttpMessageParserFactory
我将HttpComponents Core non-blocking I/O(httpcore-nio)
添加到pom.xml
后解决了这个问题。现在我有了
NoSuchMethodError: org.apache.http.nio.client.HttpAsyncClient.start()V
我已经比较了dependency:tree
当项目有春季启动父项时以及它被注释掉的时候。它告诉我,添加spring boot parent会更改我的依赖项的版本。您可以检查差异 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>
...
答案 0 :(得分:3)
我能够通过覆盖我的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肯定会升级依赖项。