我已经使用Spring和Apache HTTPComponents编写了一个简单的Java HTTP客户端应用程序。当我运行它,它失败例外:为什么HttpClient需要httpasyncclient?
java.lang.NoClassDefFoundError: org/apache/http/nio/client/HttpAsyncClient
at java.net.URLClassLoader.findClass(URLClassLoader.java:381)
at java.lang.ClassLoader.loadClass(ClassLoader.java:424)
at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:331)
at java.lang.ClassLoader.loadClass(ClassLoader.java:357)
at my.package.<init>(MyClientTest.java:60)
该行的代码是:
<dependency>
<groupId>org.apache.httpcomponents</groupId>
<artifactId>httpasyncclient</artifactId>
<version>4.1.2</version>
<scope>test</scope>
</dependency>
:
private final RestTemplate restTemplate =
new RestTemplate(new HttpComponentsAsyncClientHttpRequestFactory());
我可以添加依赖于我的生成治愈这种
但为什么我需要这样做?我没有做任何明确异步的事情。我认为Maven应该自动引入必要的依赖关系。
@KlausGroenbaek作为企业编码员,我在这件事上没有多少选择。但它不会造成我们任何重大问题。 – slim
对密切的选民 - 我添加了这个问答,因为我花了半天的时间找到问题,并希望SO有答案。很多人在其他地方也问过类似的问题,只是得到了答案,他们应该在类路径中获得异步jar。我怀疑在大多数情况下,他们并不真的需要它。 – slim
您可以发布整个堆栈跟踪,当发生此问题时,您将加载哪个类。 –