1

Java プログラムを実行しようとすると、次の実行時エラーが発生します。エラーを以下に示します。

Exception in thread "main" java.lang.NoClassDefFoundError: org/apache/http/params/SyncBasicHttpParams
    at org.apache.http.impl.client.DefaultHttpClient.createHttpParams(DefaultHttpClient.java:157)
    at org.apache.http.impl.client.AbstractHttpClient.getParams(AbstractHttpClient.java:448)
    at org.apache.http.impl.client.AbstractHttpClient.createClientConnectionManager(AbstractHttpClient.java:309)
    at org.apache.http.impl.client.AbstractHttpClient.getConnectionManager(AbstractHttpClient.java:466)
    at org.apache.http.impl.client.AbstractHttpClient.createHttpContext(AbstractHttpClient.java:286)
    at org.apache.http.impl.client.AbstractHttpClient.execute(AbstractHttpClient.java:851)
    at org.apache.http.impl.client.AbstractHttpClient.execute(AbstractHttpClient.java:805)
    at org.apache.http.impl.client.AbstractHttpClient.execute(AbstractHttpClient.java:784)
    at net.floodlightcontroller.core.internal.PacketStreamerClient.registerForPackets(PacketStreamerClient.java:90)
    at net.floodlightcontroller.core.internal.PacketStreamerClient.main(PacketStreamerClient.java:51)
Caused by: java.lang.ClassNotFoundException: org.apache.http.params.SyncBasicHttpParams
    at java.net.URLClassLoader$1.run(URLClassLoader.java:366)
    at java.net.URLClassLoader$1.run(URLClassLoader.java:355)
    at java.security.AccessController.doPrivileged(Native Method)
    at java.net.URLClassLoader.findClass(URLClassLoader.java:354)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:424)
    at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:308)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:357)
    ... 10 more

エラーはjava.lang.NoClassDefFoundError

明らかな理由NoClassDefFoundErrorは、特定のクラスがクラスパスで使用できないためです。そのため、それをクラスパスに追加するか、クラスパスで使用できないと予想される場合は理由を確認する必要があります。

クラスパスに追加したファイルは次のとおりです。

export CLASSPATH=$(JARS=(./lib/*.jar); IFS=:; echo "${JARS[*]}")
export CLASSPATH=$CLASSPATH:~/.m2/repository/org/apache/httpcomponents/httpclient/4.0.1/httpclient-4.0.1.jar
export CLASSPATH=$CLASSPATH:~/.m2/repository/org/apache/httpcomponents/httpcore/4.0.1/httpcore-4.0.1.jar
export CLASSPATH=$CLASSPATH:~/.m2/repository/commons-logging/commons-logging/1.1.1/commons-logging-1.1.1.jar
export CLASSPAHT=$CLASSPATH:~/ms_thesis/ONOS/httpcore-4.1.jar
#export CLASSPATH=$CLASSPATH:~/ms_thesis/ONOS/lib/httpclient-4.2.jar
export CLASSPATH=$CLASSPATH:~/google-gson-2.2.4/gson-2.2.4.jar

「org/apache/http/params/SyncBasicHttpParams」を見つけるためにどのjarファイルを追加する必要がありますか?私はJavaが初めてで、この問題をデバッグする方法がわかりません。

4

4 に答える 4

2

公式ドキュメントによると、探しているクラスは4.1以降の httpcore にのみあります。新しい JAR を取得する必要があります。

于 2013-08-15T05:33:24.450 に答える
1

org/apache/http/params/SyncBasicHttpParamsクラスは httpcore-4.1-alpha1.jar の下にあり、次からダウンロードできます。

http://mirrors.ibiblio.org/pub/mirrors/maven2/org/apache/httpcomponents/httpcore/4.1-alpha1/httpcore-4.1-alpha1.jar

将来、クラスの jar を見つける必要がある場合は、このリンクを使用できます。これは一般的に役立ちます。

http://www.findjar.com/

于 2013-08-15T05:34:09.427 に答える
0

あなたの場合、プロジェクトに含める必要のあるいくつかのjarファイルを見逃しているようです

そうしないと、主に静的メソッドの呼び出しまたは初期化が原因で、リンクのいずれかが例外を与えています

于 2013-10-25T05:12:35.923 に答える
0

jar ファイルhttpcore-4.1を取得するためのリンクは次のとおりです。

于 2013-10-25T05:16:35.777 に答える