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项目中的依赖关系以获取更多详细信息。
- 右键单击该项目,然后select“属性”
- 转到Java构buildpath顺序和导出。
- 勾选“Android私人图书馆”
- 单击项目,清理
对于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" />
- 升级到Android SDK 2.3和ADT 8.0后,“无法获取项目的系统库”
- Android Build失败 – java.lang.IllegalArgumentException:已经添加:Lcom / google / api / client / escape / CharEscapers;
- 用片段活动创build的ADT空白活动
- 此Android SDK需要Android Developer Toolkit版本23.0.0或更高版本
- 没有生成R.java文件在我的项目中
- 什么是ADT Bundle的最终版本?
- 如何将javadoc或源文件附加到libs文件夹中的jar文件中?
- 如何在真实设备上进行debugging(使用Eclipse / ADT)
- 无法findadb.exe – 升级到Android SDK 2.3后