今日、ADTおよびSDKツールをv17に更新し、Googleのgson jarライブラリを使用するプロジェクトがNoClassDefFoundErrorをスローし始めました。 logcatの出力は次のとおりです。
> 03-22 12:30:58.941: E/AndroidRuntime(21672): FATAL EXCEPTION: main
> 03-22 12:30:58.941: E/AndroidRuntime(21672):
> Java.lang.NoClassDefFoundError: com.google.gson.Gson 03-22
> 12:30:58.941: E/AndroidRuntime(21672): at
> com.matriksdata.conn.XRequestHandler.connect(XRequestHandler.Java:35)
> 03-22 12:30:58.941: E/AndroidRuntime(21672): at
> com.matriksdata.conn.XRequestHandler.makeRequest(XRequestHandler.Java:
> 29) 03-22 12:30:58.941: E/AndroidRuntime(21672): at
> com.matriksdata.bavul.XBaseWithConnectionActivity.makeRequest(XBaseWithConnectionActivity.Java:
> 46) 03-22 12:30:58.941: E/AndroidRuntime(21672): at
> com.matriksdata.ui.login.SplashScreenActivity.onCreate(SplashScreenActivity.Java:
> 36) 03-22 12:30:58.941: E/AndroidRuntime(21672): at
> Android.app.Activity.performCreate(Activity.Java:4465) 03-22
> 12:30:58.941: E/AndroidRuntime(21672): at
> Android.app.Instrumentation.callActivityOnCreate(Instrumentation.Java:
> 1049) 03-22 12:30:58.941: E/AndroidRuntime(21672): at
> Android.app.ActivityThread.performLaunchActivity(ActivityThread.Java:
> 1919) 03-22 12:30:58.941: E/AndroidRuntime(21672): at
> Android.app.ActivityThread.handleLaunchActivity(ActivityThread.Java:
> 1980) 03-22 12:30:58.941: E/AndroidRuntime(21672): at
> Android.app.ActivityThread.access$600(ActivityThread.Java:122) 03-22
> 12:30:58.941: E/AndroidRuntime(21672): at
> Android.app.ActivityThread$H.handleMessage(ActivityThread.Java:1146)
> 03-22 12:30:58.941: E/AndroidRuntime(21672): at
> Android.os.Handler.dispatchMessage(Handler.Java:99) 03-22
> 12:30:58.941: E/AndroidRuntime(21672): at
> Android.os.Looper.loop(Looper.Java:137) 03-22 12:30:58.941:
> E/AndroidRuntime(21672): at
> Android.app.ActivityThread.main(ActivityThread.Java:4340) 03-22
> 12:30:58.941: E/AndroidRuntime(21672): at
> Java.lang.reflect.Method.invokeNative(Native Method) 03-22
> 12:30:58.941: E/AndroidRuntime(21672): at
> Java.lang.reflect.Method.invoke(Method.Java:511) 03-22 12:30:58.941:
> E/AndroidRuntime(21672): at com.Android.internal.os.ZygoteInit
> $MethodAndArgsCaller.run(ZygoteInit.Java:784) 03-22 12:30:58.941:
> E/AndroidRuntime(21672): at
> com.Android.internal.os.ZygoteInit.main(ZygoteInit.Java:551) 03-22
> 12:30:58.941: E/AndroidRuntime(21672): at
> dalvik.system.NativeStart.main(Native Method)
何か案は?
今日も同様の問題に直面しました。
これは私のためにそれを修正しました:
問題は、プロパティ-Java Build Path- Add External Jarを追加すると、デフォルトでは「libs」フォルダーに外部jarが配置されず、代わりに「参照ライブラリ」の下に配置されることです。 Android Dependencies」とこれにより、NoClassDefFoundErrorが発生します。
詳しくは Androidプロジェクト で依存関係を扱う] ==を確認してください。
このサイトは私にとってうまくいった最も簡単な解決策を持っています、「注文とエクスポート」の下のライブラリのチェックボックスを選択してください。
http://Android.foxykeep.com/dev/how-to-fix-the-classdefnotfounderror-with-adt-17
これらの問題を修正する方法を説明する簡単な投稿をブログに作成しました。これは、ライブラリと、Eclipseがライブラリを管理する方法に加えられた変更に関係しています。必要に応じて、ここで確認できます。 http://xrigau.wordpress.com/2012/03/22/fix-some-problems-with-libraries-in-the-adt-17-plugin-10 /
注文を確認して選択
Project->Properties->Java build path->Order and Export:
注文して選択:
select Google APIs (optional)
select Dependencies
select Android Private Libraries
[-] src
[-] gen
そしてタブライブラリでは:
依存関係プライベートライブラリ(「libs」ディレクトリ内のjar)その他
私のために働いた!
これは、Android GoogleのDevsによって提供されている公式リンクです。プラグインやSDKを更新した後にNoClassDefFoundExceptionが発生した場合は、記事に目を通してください。
https://plus.google.com/115995639636688350464/posts/38o8ZA6xQK4
ビルドパスでgsonライブラリを確認します。おそらくgsonライブラリにアクセスできません。
私はライブラリプロジェクトでGSONを使用しているため、ビルドパスにGSON jarを追加するだけでなくこの問題を解決するには、ライブラリプロジェクトマニフェストで次のように宣言する必要があります。
<uses-library Android:name="com.google.gson" />
gSON jarをダウンロードしてクラスパスとして作成