【问题标题】:Gson NoClassDefFoundError after ADT and SDK Tools update to v17ADT 和 SDK 工具更新到 v17 后的 Gson NoClassDefFoundError
【发布时间】:2012-04-06 22:04:10
【问题描述】:

今天我将我的 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)

有什么想法吗?

【问题讨论】:

  • 您是否尝试过从 Eclipse 中清理项目?

标签: android gson adt noclassdeffounderror


【解决方案1】:

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

这为我解决了问题:

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

问题是在使用属性 - Java 构建路径 - 添加外部 Jar 时,默认情况下外部 jar 不会放在“libs”文件夹中,而是放在“引用库”而不是“Android 依赖项”下,这会导致NoClassDefFoundError。

请查看Dealing with dependencies in Android projects了解更多详情。

【讨论】:

  • 能否请您扩展您的帖子,解释如何使用此配置链接 sourcesjavadoc
  • 对于这个报告的问题,在 cmets 中有一些“操作方法”修复源和 javadocs:Link
【解决方案2】:
  1. 右键单击项目,然后选择属性
  2. 转到 Java 构建路径顺序和导出。
  3. 勾选“Android 私有库”
  4. 点击项目,清理

【讨论】:

  • 它帮助了我并节省了我很多时间
  • 谢谢,这是唯一对我有帮助的事情
【解决方案3】:

对于 SDK 工具 17,您需要按照建议 here 将库项目的文件夹从“lib”重命名为“libs”。 也看看this

【讨论】:

    【解决方案4】:

    这个网站有对我有用的最简单的解决方案,在“订购和导出”下选中图书馆的复选框。

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

    【讨论】:

    • 这为我修复了它,但我不得不重新启动 eclipse,而不是“清理”项目。
    • @CQM,感谢您的评论,对我来说重新启动 Eclipse 也有效,而清理项目却没有。
    【解决方案5】:

    我在博客中创建了一篇快速帖子,解释如何解决这些问题。它与库以及他们对 Eclipse 现在管理库的方式所做的更改有关。如果需要,可以在这里查看:http://xrigau.wordpress.com/2012/03/22/fix-some-problems-with-libraries-in-the-adt-17-plugin-10/

    【讨论】:

      【解决方案6】:

      查看订单并选择

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

      订购和选择:

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

      在标签库中:

      依赖项 私有库('libs' 目录中的 jars) 其他

      为我工作!

      【讨论】:

        【解决方案7】:

        在构建路径中检查您的 gson 库。也许 gson libraty 是不可访问的。

        【讨论】:

          【解决方案8】:

          这是由 Google 的 Android Devs 提供的官方链接。 如果您在之后遇到 NoClassDefFoundException,请阅读本文 更新插件和/或 SDK

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

          【讨论】:

            【解决方案9】:

            下载 GSON jar 并制作为类路径

            【讨论】:

              【解决方案10】:

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

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

              【讨论】:

                猜你喜欢
                • 1970-01-01
                • 1970-01-01
                • 2012-04-06
                • 2014-04-16
                • 2023-03-22
                • 1970-01-01
                • 1970-01-01
                • 1970-01-01
                • 2013-02-20
                相关资源
                最近更新 更多