java - Android NoClassDefFoundError 与生成最终存档时出错 : Found duplicate file for APK:

标签 java android jar dependencies libgdx

我正在尝试在 Eclipse 中启动一个 Android 项目,该项目依赖于另一个常规 Java 项目,而该项目的构建路径中包含一个 JAR。如果我启动 Android 项目,当常规 Java 项目的源代码使用 JAR 中的代码时,我会收到 NoClassDefFoundError 错误。我尝试了将 JAR 放入 libs 文件夹并将其添加到我的构建路径(甚至将其移动到顶部)的解决方案,但这反过来会生成 Errorgeneratefinalarchive:FoundduplicatefileforAPK: libs/gdx.jar 错误。视觉上:

[JAR not in Android path]: Android Project -> Java Project -> Jar -> NoClassDefFoundError
[JAR in Android path]:     Android Project -> Java Project -> JAR -> Duplicate file for APK Error

具体来说,这是一个 LibGDX 项目。我制作了一个 JAR,其中封装了一些我将重用的常见 LibGDX 功能。当我运行我的桌面项目(没有更改其构建路径)时,它运行完美,但 Android 项目失败。如何正确地将这个 JAR 包含在我的 Android 项目中?

最佳答案

我发现了问题的根源:

  1. 在使用 Android 进行编译时,当控制台命中包含的 JAR/项目时,控制台正在读取错误的类文件魔法 (CAFEBABE)。这导致它没有包含在构建中
  2. 当应用要使用引用的 JAR 时,它找不到它,但是桌面程序没有产生相同的错误输出,并且可以使用该 JAR .
  3. 问题是我已将代码移至另一个 Java 项目,该项目默认设置为使用 Java 7,而 Android 仅支持 Java 6,而其迁移的原始项目设置为使用 Java 6 (由 LibGDX 的设置向导配置)。这解释了为什么该项目可以在我的桌面(可以执行 Java 7)上运行,但不能在 Android 上运行。
  4. 当我使用 Java 6 重新编译 JAR 时,Android 能够解析该 JAR 并将其包含在项目中。

关于java - Android NoClassDefFoundError 与生成最终存档时出错 : Found duplicate file for APK:,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18214209/

相关文章:

android - 在 Android 上强制停止我的应用程序后,我还能收到广播接收器 Intent 吗?

android - 滚动复选框在 RecyclerView 中未选中或反之亦然

java - 无法执行jar文件:mainclass属性丢失Intellij Gradle

java - 使用反射从 Jar 文件中获取所有类

java - 如何在AWS中构建各种微服务组件

java - 双端队列

android - @font-face 在 Android 浏览器中不工作

java - jar 和 package 不起作用

java - 迭代器是如何在 Java 中实现的?

java - 如何为硬币翻转游戏设计 "machine learning"方法