ADT和SDK工具更新至v17后,Gson NoClassDefFoundError

今天我更新了我的ADT和SDK Tools到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) 

有任何想法吗?

我今天遇到类似的问题。

这对我来说是固定的:

  • 从构buildpath中删除所有Android库项目和外部jar子。
  • 在你的项目中创build一个名为“libs”的文件夹。
  • 将所有外部.jars放在该文件夹中,ADT现在应该将它们放在“Android依赖项”下。
  • 以正常方式重新导入您以前的所有Android库项目。

问题是当使用Properties – Java Build Path- Add External Jar时,默认情况下,外部jar文件不会被放置在'libs'文件夹中,而是被放置在'Referenced Libraries'而不是'Android Dependencies'之下,这会导致NoClassDefFoundError。

请检查处理Android项目中的依赖关系以获取更多详细信息。

  1. 右键单击该项目,然后select“属性”
  2. 转到Java构buildpath顺序和导出。
  3. 勾选“Android私人图书馆”
  4. 单击项目,清理

对于SDK Tools 17,您需要将库项目的文件夹从“lib”重命名为“libs”,如下所示。 也看看这个 。

这个网站有最简单的解决scheme,我select了“订单和导出”下的图书馆checkbox。

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

我在博客中创build了一个快速文章,解释如何解决这些问题。 它与图书馆以及他们对Eclipse如何pipe理图书馆所做的改变有关。 你可以在这里检查它,如果你想: http : //xrigau.wordpress.com/2012/03/22/fix-some-problems-with-libraries-in-the-adt-17-plugin-10/

检查订单并select

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

订购并select:

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

在标签库中:

私有库(“libs”目录下的jar)其他

为我工作!

在构buildpath中检查你的gson库。 也许克里森并不是不可取的。

这是Android Devs在Google提供的官方链接。 如果在更新插件和/或SDK后面临NoClassDefFoundException,请阅读文章

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

下载GSON jar并作为类path

我在一个库项目中使用GSON,所以要解决这个问题,除了在构buildpath上添加GSON jar,我需要在我的库项目清单上声明它,如下所示:

 <uses-library android:name="com.google.gson" />