【问题标题】:Android Eclipse NoClassDefFoundError for external .jar files外部 .jar 文件的 Android Eclipse NoClassDefFoundError
【发布时间】:2012-04-07 16:23:24
【问题描述】:

我遇到了一个奇怪的错误。我有一个使用外部库的 Android 项目,特别是:

  • android-support-v4.jar(用于 Android 1.6 中的 Fragment 支持)
  • GoogleAdMobAdsSdk-4.3.1.jar(用于广告)

项目运行良好,直到我更新了插件的某些方面(不记得具体细节,因为我没有过多关注它),之后,每当我尝试使用上述 .jar 文件中的任何类时(或其任何子类,甚至是我定义的子类),我会得到一个 java.lang.NoClassDefFoundError。找了好久都没有找到答案,真是一头雾水。

我认为这个问题与我的 IDE 的设置方式有关,与实际代码无关,因此除非绝对必要,否则我不会发布任何内容。

【问题讨论】:

    标签: android eclipse adt


    【解决方案1】:

    你需要阅读这个 - Dealing with dependencies in Android projects

    这个链接也很有用 - ClassDefNotFoundError with ADT 17

    基本上,创建一个名为libs 的文件夹并将所有jar 文件放入其中。最近的更新将自动为您处理其余的事情。您不再需要编辑路径。

    【讨论】:

    • 我真的不知道他们为什么将 ADT 更改为这种行为方式,因为这些库将在多个项目之间共享。但至少这将是一个短期的解决方案。
    【解决方案2】:

    Android 目前不支持 Java1.7。以合规级别 1.7 构建的 Jar 不能在 Android 应用程序中使用。在导出 jar 文件之前,使用合规级别 5.0 或 6.0 重新构建您的 Java 项目。

    我通过谷歌找到了这篇文章,上面的答案并没有解决我的问题。希望我所说的对其他人有所帮助。

    【讨论】:

    • 这原来是我的问题。我用 1.6 重新编译,瞧!我使用“javac -source 6 -target 6 ...”
    【解决方案3】:

    如果您在升级到 ADT 22 后看到 NoClassDefFoundError,请在 Eclipse 中尝试:

    • 转到项目属性Java 构建路径排序和导出 选项卡。
    • 检查 Android Private Libraries 选项。

    【讨论】:

      【解决方案4】:

      对于已更新至 r17 且具有许多依赖项的其他人也是一个警告。我的构建路径上有另一个引用的项目,但在遵循互联网上有关此 r17 问题的所有说明后,它仍然无法正常工作。

      一个小时后发现,我引用的项目使用的外部 Jar 版本比我的主项目使用的旧版本。尝试编译主项目时,Eclipse会因为这个jar版本差异而放弃,我从未注意到控制台中的警告消息。

      解决方案是将较新版本的外部 jar 文件复制到引用项目的 libs 目录中。

      哇——这样的生产力杀手.....

      【讨论】:

        【解决方案5】:

        我今天也遇到了这个错误,因为更新到 Android SDK, r17。 @aneal 指出的链接没有讨论的是如何处理外部运行时库(例如在他们自己的标题下导入的那些 - 不是导入的用户库)。

        解决此问题最简单的方法是更改​​构建路径中的构建顺序。只需右键单击您的项目并选择 Properties。从这里选择Java Build Path。在显示屏顶部,选择标签 order and export 并将 GoogleAdMobAdsSdk-4.3.1.jar 移动到 Android X 上方(将 x 替换为您正在使用的版本)。接下来,清理您的项目并运行它。你应该很高兴!

        【讨论】:

          【解决方案6】:

          我解决它的方法是:右键单击项目并选择构建路径。在出现的选项中选择配置构建路径。之后查看您的库是否在库文件夹中,然后选择订单和导出选项卡,然后在那里选择所有 jar 文件。然后选择 ok 并运行您的项目。

          【讨论】:

            【解决方案7】:

            如果您将 Eclipse 与 Maven IDE (m2e) 一起使用,请转到“Java Build Path”,然后转到“Order and Export”,最后选中“Maven Dependencies”项并将其拉到列表的底部。您应该对同一工作区中的项目引用执行相同的操作。 每次我在新计算机上设置项目时都会发生这种情况。

            【讨论】:

              猜你喜欢
              • 1970-01-01
              • 2013-07-19
              • 2016-06-06
              • 2012-10-24
              • 2012-08-21
              • 1970-01-01
              • 2011-06-23
              • 2011-09-11
              相关资源
              最近更新 更多