2

症状:作成者のgitリポジトリから取得したプロジェクトを使用しています。libsフォルダに表示されているように、私は彼らのライブラリを含めました。プロジェクトにエラーはなく、プロジェクトはコンパイルされます。しかし、jarにあるはずのオブジェクトにアクセスすると、クラッシュします。

私はここで読んだ他のいくつかの提案をしました。変更について何か読んだことがclasspathありますが、どこにありますか?

また、jarのsrcコードは、問題のオブジェクトが実際に存在していることを示しています。

ConfigurationBuilder configurationBuilder = new ConfigurationBuilder();

05-30 11:26:16.878: E/AndroidRuntime(11098): FATAL EXCEPTION: main
05-30 11:26:16.878: E/AndroidRuntime(11098): java.lang.NoClassDefFoundError:      twitter4j.conf.ConfigurationBuilder
05-30 11:26:16.878: E/AndroidRuntime(11098):    at com.pigmal.android.ex.twitter4j.TwitterApp.askOAuth(TwitterApp.java:110)
05-30 11:26:16.878: E/AndroidRuntime(11098):    at com.pigmal.android.ex.twitter4j.TwitterApp.onClick(TwitterApp.java:144)
05-30 11:26:16.878: E/AndroidRuntime(11098):    at android.view.View.performClick(View.java:2482)
05-30 11:26:16.878: E/AndroidRuntime(11098):    at android.view.View$PerformClick.run(View.java:9077)
05-30 11:26:16.878: E/AndroidRuntime(11098):    at android.os.Handler.handleCallback(Handler.java:587)
05-30 11:26:16.878: E/AndroidRuntime(11098):    at a ndroid.os.Handler.dispatchMessage(Handler.java:92)
05-30 11:26:16.878: E/AndroidRuntime(11098):    at android.os.Looper.loop(Looper.java:130)
05-30 11:26:16.878: E/AndroidRuntime(11098):    at android.app.ActivityThread.main(ActivityThread.java:3683)
05-30 11:26:16.878: E/AndroidRuntime(11098):    at java.lang.reflect.Method.invokeNative(Native Method)
05-30 11:26:16.878: E/AndroidRuntime(11098):    at java.lang.reflect.Method.invoke(Method.java:507)
05-30 11:26:16.878: E/AndroidRuntime(11098):    at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:839)
05-30 11:26:16.878: E/AndroidRuntime(11098):    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:597)
05-30 11:26:16.878: E/AndroidRuntime(11098):    at dalvik.system.NativeStart.main(Native Method)

これが私の完全なプロジェクト設定です。これがAndroidを使用しているという事実は、おそらくここでは関係ありません。Androidにタグを付けてJavaの専門家を遠ざけたくありません。

4

5 に答える 5

4

これは私のためにそれを解決しましたhttp://android.foxykeep.com/dev/how-to-fix-the-classdefnotfounderror-with-adt-17

What I did to fix the bug was :

Remove the libraries from the standard Java build path :
Right click on the project name > Properties > Java Build Path > tab Libraries > remove      everything except the “Android X.X” (2.3.3 in my case) and the “Android Dependencies”
Rename the libraries folder from “lib” to “libs”
By doing that, all the libraries in the folder “libs” are found by the Android plugin and   are added to the “Android Dependencies” item of the project
Restart Eclipse
Android Dependencies should be created. Running the app won't produce NoClassDefFoundError anymore

例外として、後でプロジェクトを単にクリーンアップするのではなく、これらの指示に従った後にECLIPSEを再起動する必要がありました。

于 2012-05-30T20:09:57.703 に答える
2

これを試してみてください、これは私からうまくいきました。

  1. ビルドパスに移動し、twitter4jライブラリを削除して、[OK]を実行します。

  2. ビルドパスに移動し、[外部ライブラリの追加]を選択してから、githubからダウンロードしたプロジェクトフォルダーに移動し、そのlibフォルダーに移動すると、そこにtwitter4jファイルがあり、twitter4j-coreのみを選択します(ただし、それでも失敗する場合にのみ、twitter4j-streamも含め、それまではコアのみを保持します)、OKを実行します。

于 2012-05-30T18:55:23.033 に答える
1

同じ問題が発生しました。ビルドパスからすべてのTwitterライブラリを削除し、libフォルダーの名前をlibsに変更すると、問題が解決しました。

于 2012-06-13T05:30:34.660 に答える
0

この質問についても、Androidにタグを付ける方がよいと思います。以前の投稿で、ADTバージョンが原因でも同様の問題が発生している人を見かけました。理想的には、コードをlibsフォルダー内に配置しているので、これらすべてのクラスを取得できるはずです。しかし、これは実行時の問題であり、コンパイル時間ではないようです。

また、これはアンドロイドに固有のようです。


クラスパスにjarを手動で追加しましたか?通常、jarがフォルダーに追加されると、スナップショットに示されているように直接ではなく、libs内部に表示され始めます。Android Dependencies

于 2012-05-30T16:29:40.130 に答える
0

私の場合、フォルダの名前を変更しましたが、再起動しても問題は解決しませんでした。しかし、前のコメントに投稿されたリンクのあるページの中に、私の問題を解決した人の答えがあります。この応答は言う:

If you have references to jars that are not in the ‘libs’ folder, for example if you use ‘classpath variable’, you can resolve the NoClassDefFoundError issue with the new ADT 17 by exporting the references. To export the references: simply go to “Properties > Java Build Path > Order and Export”, and check all the references you want exported.

そして、srcフォルダーの前にtwitterjarを移動する必要があります

于 2013-07-12T08:50:52.143 に答える