ADT和SDK Tools更新到v17后的Gson NoClassDefFoundError

Yas*_*RIM 43 android noclassdeffounderror adt gson

今天我将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)
Run Code Online (Sandbox Code Playgroud)

有任何想法吗?

Fre*_*oid 77

我今天遇到了类似的问题.

这为我修好了:

  • 从构建路径中删除所有Android库项目和外部jar.
  • 在项目中创建名为"libs"的文件夹.
  • 将所有外部.jars放在该文件夹中,ADT现在应该将它们放在"Android Dependencies"下.
  • 以正常方式重新导入所有以前的Android库项目.

问题是,在使用属性 - Java Build Path-添加外部Jar时,默认情况下外部jar不会放在'libs'文件夹中,而是将它们放在'Referenced Libraries'而不是'Android Dependencies'下,这会导致NoClassDefFoundError.

请检查在Android项目中处理依赖项以获取更多详细信息.


小智 13

  1. 右键单击该项目,然后选择"属性"
  2. 转到Java Build Path-Order和Export.
  3. 勾选"Android私人图书馆"
  4. 单击Project,Clean


Ele*_*eni 10

对于SDK Tools 17,您需要将库项目的文件夹从"lib"重命名为"libs",如此处所示.还看看这个.


Geo*_*gie 5

这个网站有最简单的解决方案,对我有用,选择"订购和导出"下的图书馆复选框.

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

  • 这为我修好了,但不是"清理"项目,我不得不重启eclipse. (2认同)