私は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)
この行のコードは次のとおりです。
private final RestTemplate restTemplate =
new RestTemplate(new HttpComponentsAsyncClientHttpRequestFactory());
私は私のビルドに依存関係を追加することで、これを治すことができます。
<dependency>
<groupId>org.apache.httpcomponents</groupId>
<artifactId>httpasyncclient</artifactId>
<version>4.1.2</version>
<scope>test</scope>
</dependency>
しかし、なぜこれを行う必要がありますか?私は明示的に非同期の何かをしていない。私はMavenが自動的に必要な依存関係をもたらすと考えていました。あなたが誤って非同期リクエストの工場を求めていない
@KlausGroenbaekコーポレートコーダーとして、私は問題でほとんど選択肢がありません。しかしそれは私たちに大きな問題を引き起こしません。 – slim
クローズアップ投票者に - このQ&Aを追加しました。私は問題を発見するのに半日を費やしていたので、SOに答えが欲しいと願っていました。非常に多くの人が、この特定のクラスに関する他の場所で同様の質問をしてきましたが、クラスパスで非同期のjarファイルを取得する必要があるという答えを得ました。私はほとんどの場合、彼らが本当にそれを必要としなかったと思う。 – slim
stacktrace全体を投稿できますか?この問題が発生したときにどのクラスを読み込んでいますか。 –