web-dev-qa-db-ja.com

ADTおよびSDKツールがv17に更新された後のGson NoClassDefFoundError

今日、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)

何か案は?

43
Yasin YILDIRIM

今日も同様の問題に直面しました。

これは私のためにそれを修正しました:

  • すべてのAndroidライブラリプロジェクトと外部jarをビルドパスから削除します。
  • プロジェクトに「libs」という名前のフォルダーを作成します。
  • すべての外部.jarをそのフォルダーに配置すると、ADTはそれらを「Android Dependencies」の下に配置します。
  • 以前のすべてのAndroid Libraryプロジェクトを通常の方法で再インポートします。

問題は、プロパティ-Java Build Path- Add External Jarを追加すると、デフォルトでは「libs」フォルダーに外部jarが配置されず、代わりに「参照ライブラリ」の下に配置されることです。 Android Dependencies」とこれにより、NoClassDefFoundErrorが発生します。

詳しくは Androidプロジェクト で依存関係を扱う] ==を確認してください。

77
Freddroid
  1. プロジェクトを右クリックし、[プロパティ]を選択します
  2. Java Build Path-Order and Exportに移動します。
  3. 「Android Private Libraries」にチェックを入れます
  4. プロジェクトをクリックしてクリーン
13
Natt

SDK Tools 17の場合、ライブラリプロジェクトのフォルダーの名前を「lib」から「libs」に変更する必要があります herethis もご覧ください。

10
Eleni

このサイトは私にとってうまくいった最も簡単な解決策を持っています、「注文とエクスポート」の下のライブラリのチェックボックスを選択してください。

http://Android.foxykeep.com/dev/how-to-fix-the-classdefnotfounderror-with-adt-17

5
Georgie

これらの問題を修正する方法を説明する簡単な投稿をブログに作成しました。これは、ライブラリと、Eclipseがライブラリを管理する方法に加えられた変更に関係しています。必要に応じて、ここで確認できます。 http://xrigau.wordpress.com/2012/03/22/fix-some-problems-with-libraries-in-the-adt-17-plugin-10 /

2
Xavi Rigau

注文を確認して選択

Project->Properties->Java build path->Order and Export:

注文して選択:

select Google APIs (optional)
select Dependencies
select Android Private Libraries
[-] src
[-] gen

そしてタブライブラリでは:

依存関係プライベートライブラリ(「libs」ディレクトリ内のjar)その他

私のために働いた!

2
Hpsaturn

これは、Android GoogleのDevsによって提供されている公式リンクです。プラグインやSDKを更新した後にNoClassDefFoundExceptionが発生した場合は、記事に目を通してください。

https://plus.google.com/115995639636688350464/posts/38o8ZA6xQK4

0
JaydeepW

ビルドパスでgsonライブラリを確認します。おそらくgsonライブラリにアクセスできません。

0
Artemis

私はライブラリプロジェクトでGSONを使用しているため、ビルドパスにGSON jarを追加するだけでなくこの問題を解決するには、ライブラリプロジェクトマニフェストで次のように宣言する必要があります。

<uses-library Android:name="com.google.gson" />
0
ademar111190

gSON jarをダウンロードしてクラスパスとして作成

0
Srikanth