15

HttpClient 4.0.1 からサンプル アプリケーションを実行しようとしています。これは、サンプル セクションの ClientMultiThreadedExecution.java ファイルです。これらのファイルをクラスパスに入れました: apache-mime4j-0.6.jar; commons-codec-1.3.jar; commons-logging-1.1.1.jar; httpclient-4.0.1.jar; httpcore-4.0.1.jar; httpmime-4.0.1.jarファイルは正しくコンパイルされます。実行時に次のエラーが発生します。

Exception in thread "main" java.lang.NoClassDefFoundError: org/apache/http/client/methods/HttpUriRequest
Caused by: java.lang.ClassNotFoundException: org.apache.http.client.methods.HttpUriRequest
    at java.net.URLClassLoader$1.run(URLClassLoader.java:200)
    at java.security.AccessController.doPrivileged(Native Method)
    at java.net.URLClassLoader.findClass(URLClassLoader.java:188)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:306)
    at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:276)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:251)
    at java.lang.ClassLoader.loadClassInternal(ClassLoader.java:319)

参照がありませんか?クラスパス エラーのようですが、どの jar ファイルを含めるかわかりません。よろしくお願いいたします。

4

5 に答える 5

7

この例外は、前述のクラスが実行時のクラスパスにないことを示しています。

プログラムの実行方法に応じて、ランタイム クラスパスを指定する方法がいくつかあります。適切な IDE は、これらすべてをユーザーの手から透過的に取得するため、コマンド プロンプトで実行していると思います。

ファイルをダブルクリックまたはダブルクリックして JAR ファイルとして実行する場合は、JAR ファイルのエントリでjava.exe -jarクラスパスを指定する必要があります。JAR を実行するときはいつでも、環境変数と引数は無視されることに注意してください。Class-PathMANIFEST.MF%CLASSPATH%-cp-classpath

で「プレーン バニラ」Java アプリケーションとして実行している場合は、 or引数java.exeで指定する必要があります。この引数を使用すると、環境変数は無視されることに注意してください。-cp-classpath%CLASSPATH%

どちらの方法でも、クラスパスは、JAR ファイルへの (セミ) コロンで区切られたパスの文字列 (絶対パスまたは現在の作業ディレクトリからの相対パス) として存在する必要があります。例えば

java -cp .;/path/to/file1.jar;/path/to/file2.jar com.example.MyClass

(Unix/Linux を使用している場合は、セミコロンの代わりにコロンをパス区切りとして使用してください)

于 2010-07-12T18:51:42.493 に答える
5

そのクラスは httpclient-4.0.1.jar にあるため (確かにダウンロードしたところです)、クラスパスに適切に配置していないと思われます。

コードをどのようにコンパイルして実行していますか?

于 2010-07-12T18:46:50.383 に答える