今天我将我的ADT和SDK工具更新到v17和我的项目使用 谷歌的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)
任何想法?
答案 0 :(得分:77)
我今天遇到了类似的问题。
这为我解决了这个问题:
问题是,在使用属性 - Java Build Path-添加外部Jar时,默认情况下外部jar不会放在'libs'文件夹中,而是放在'Referenced Libraries'而不是'Android Dependencies'下,这会导致NoClassDefFoundError。
答案 1 :(得分:13)
答案 2 :(得分:10)
答案 3 :(得分:5)
这个网站有最简单的解决方案,对我有用,选择“订购和导出”下的图书馆复选框。
http://android.foxykeep.com/dev/how-to-fix-the-classdefnotfounderror-with-adt-17
答案 4 :(得分:2)
我在博客中创建了一个快速帖子,解释了如何解决这些问题。它与库有关,也就Eclipse现在如何管理库所做的改变。如果您愿意,可以在此处查看:http://xrigau.wordpress.com/2012/03/22/fix-some-problems-with-libraries-in-the-adt-17-plugin-10/
答案 5 :(得分:2)
检查订单并在
中选择Project->Properties->Java build path->Order and Export:
订购并选择:
select Google APIs (optional)
select Dependencies
select Android Private Libraries
[-] src
[-] gen
在标签库中:
依赖关系 私人图书馆('libs'目录中的罐子) 其他
为我工作!
答案 6 :(得分:0)
在构建路径中检查您的gson库。也许gson库不可访问。
答案 7 :(得分:0)
这是Android Devs在Google提供的官方链接。 如果您之后遇到NoClassDefFoundException,请阅读本文 更新插件和/或SDK
https://plus.google.com/115995639636688350464/posts/38o8ZA6xQK4
答案 8 :(得分:0)
下载GSON jar并制作类路径
答案 9 :(得分:0)
我在库项目中使用GSON,所以除了在构建路径上添加GSON jar之外解决这个问题,我需要在我的库项目清单中声明它,如下所示:
<uses-library android:name="com.google.gson" />