EclipseにAndroidプロジェクトがありますIDEが動作していました。いくつかのインポートとテストの後、エラーが表示されます:Java.lang.NoClassDefFoundError
。
私のプロジェクトには、2つのパッケージがあります。メインと、いくつかのクラスを持つ2番目のパッケージです。
メインアクティビティクラスの2番目のパッケージクラスからオブジェクトをインスタンス化しようとすると、このエラーが発生します。
Logcatは次のとおりです。
FATAL EXCEPTION: main
Java.lang.NoClassDefFoundError: com.neurospeech.wsclient.MDPIforEditorialBoard
at milos.mdpi.Journals.<init>(Journals.Java:41)
at Java.lang.Class.newInstanceImpl(Native Method)
at Java.lang.Class.newInstance(Class.Java:1409)
at Android.app.Instrumentation.newActivity(Instrumentation.Java:1040)
at Android.app.ActivityThread.performLaunchActivity(ActivityThread.Java:1777)
at Android.app.ActivityThread.handleLaunchActivity(ActivityThread.Java:1893)
at Android.app.ActivityThread.access$1500(ActivityThread.Java:135)
at Android.app.ActivityThread$H.handleMessage(ActivityThread.Java:1054)
at Android.os.Handler.dispatchMessage(Handler.Java:99)
at Android.os.Looper.loop(Looper.Java:150)
at Android.app.ActivityThread.main(ActivityThread.Java:4389)
at Java.lang.reflect.Method.invokeNative(Native Method)
at Java.lang.reflect.Method.invoke(Method.Java:507)
at com.Android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.Java:849)
at com.Android.internal.os.ZygoteInit.main(ZygoteInit.Java:607)
at dalvik.system.NativeStart.main(Native Method)
私の問題の解決策を見つけました:
解決策はここにあります: http://Android.foxykeep.com/dev/how-to-fix-the-classdefnotfounderror-with-adt-17
Eclipse Androidプラグイン(adt r17)を最近更新しましたか?次に、次のリンクが役立ちます。
adt-17でclassdefnotfounderrorを修正する方法
更新:質問が発生してから1年が経過しました。リンクを維持します。2013年でさえ、一部の人々が問題を解決するのに役立つようだからです。しかし、あなたが何をしているかに注意してください、以下のEricsのコメントを参照してください。現在のADTバージョンは22です。最新バージョンを使用することをお勧めします。
この順序でビルドパスを編集します。これでうまくいきました。
/gen
が/src
の前にあることを確認してください
ここでエクスポートするメインプロジェクトのプライベートライブラリを追加するだけで問題を修正しました。
Project Properties->Java Build Path->Order And Export
そして、Android Private Librariesがチェックされていることを確認してください。
スクリーンショット:
google-play-services_lib.jar
およびgoogle-play-services.jar
がチェックされていることを確認してください。プロジェクトをクリーンアップして再実行すると、classNotfound例外はなくなります。
1.6ではなくjdk 1.7でコンパイルされたjarを含めようとすると、このエラーが発生することもあります。
私の場合、ADTの代わりにSDKが提供するAntスクリプトを使用してアプリをパッケージ化しようとすることでこれを理解しましたが、ADTには表示されないこれらのエラーに気付きました。
[dex] Pre-Dexing libjingle_peerconnection.jar -> libjingle_peerconnection-2f82c9bf868a6c58eaf2c3b2fe6a09f3.jar
[dx]
[dx] trouble processing:
[dx] bad class file magic (cafebabe) or version (0033.0000)
[dx] ...while parsing org/webrtc/StatsReport$Value.class
[dx] ...while processing org/webrtc/StatsReport$Value.class
JDK 1.6でjarを再コンパイルし、エラーを修正しました。
他のAndroidライブラリを含む古いプロジェクトを開くと、この問題に何度か遭遇しました。私に役立つのは:
Androidを注文とエクスポートタブの一番上に移動し、選択を解除します。
はい、これは本当に違いを生みます。 Android StudioのADTを廃止する時が来たのかもしれません。
Project -> Properties -> Java Build Path -> Order & Export
およびConfirm Android Private Librariesに移動して、プロジェクトおよびアプリケーションで使用している他のすべてのライブラリプロジェクトをチェックします。
プロジェクトのプロパティから注文してエクスポートし、エクスポートに必要なjarが含まれていることを確認してください、これは私のためにそれをしました
Java Build Pathを確認した後、マニフェストファイルにコードの行を追加します。
<meta-data
Android:name="com.google.Android.gms.version"
Android:value="@integer/google_play_services_version" />