【问题标题】:Android - NoClassDefFoundError after jar changedAndroid - jar 更改后的 NoClassDefFoundError
【发布时间】:2013-03-26 15:25:55
【问题描述】:

我知道有一些类似的问题,但没有解决方案对我有帮助。 当我尝试访问(现有)类时出现 java.lang.NoClassDefFoundError 在我的项目组中自己创建的 .jar 中。

这个 .jar 在普通的 javaProject 中运行良好,但不适用于 Android。 但是这个 .jar 的旧版本在 Android 上运行良好。

我正在使用 Eclipse + Android 开发工具 - 插件(版本 21)进行开发 我已将 .jar 放在 Project_Home/libs 文件夹中。 编译时没有错误。

在抛出异常之前,出现了一些“dalvikvm - 找不到类...引用自...”的错误。

我认为,Java 版本可能有问题,因为我们的项目组最近开始使用 Java 7,但我不确定也不知道如何修复它。

非常感谢您的帮助。

【问题讨论】:

  • 你更新你的构建路径了吗?
  • 如果您需要将其添加为库,您基本上应该检查 Build Path 或 Project-Properties-Android。
  • @Cornholio:我认为您不必将它添加到 buildPath,当您将它放入 libs 文件夹时。但我已经尝试过多次 - 不起作用
  • @user2212120:按照我之前的做法,你需要把它放在你的libs文件夹中,然后在Package Explorer中右键,然后点击Build Path -> Configure Build Path。从那里,单击库选项卡,然后单击添加 JAR。然后添加 JAR,它应该可以正常工作。
  • @Roman:是的,我有。但你是对的:这听起来像是一个 BuildPath 问题。或者我认为 dalvikvm 的问题。我已经多次将它添加和删除到构建路径 - 但没有任何帮助。

标签: android java-7 noclassdeffounderror


【解决方案1】:

将你的库重命名为 libs 并更新构建路径,然后重试

【讨论】:

    【解决方案2】:

    我认为如果项目编译正常,那么我们可以排除复制或 java buildpath 中的任何错误。我收到此错误的唯一其他时间是我的代码中的导入错误。我建议您重新检查您的导入并重新创建 R.java 文件。

    【讨论】:

    • “重新检查导入”到底是什么意思(删除所有导入并再次导入?)。
    • 是的,我的意思是请确保您正在执行的导入是您要导入的正确 jar。检查包名..你提到以前的 jar 工作,所以它可能引用旧的导入。
    • 是的,它是正确的罐子。我已经删除了输入,并且从正确的 jar 中只有一种导入可能性。我删除的旧jar。
    • 您还有其他项目依赖项吗?有时导入的顺序很重要,请检查构建路径中的导入顺序并检查是否未选中..可能会将其他一些依赖项目移至顶部并将 jar 移至较低的层次结构
    • 好主意,运气不好:我只使用罐子。当然,也列出了 Android 4.2 和 Android 依赖项。罐子在上面。
    【解决方案3】:
    1. 确保您的类与 Android 中已有的类名称不同。在构建包时,由于“优化”,同名的类被省略了。

    2. Android 库大多是针对 1.5 编译的。并非所有库都存在于 Android 中。您的包可能依赖于系统中不存在的其他库。

    【讨论】:

    • 1.:这是一个唯一的名称。我不想打印它,但它大约有 50 个字符长 - 和 example.org 不一样
    • 2.: 可能是这样,但是这个 .jar 的旧版本可以正常工作。没有大的变化,现在它在 .jar 中找不到任何类
    【解决方案4】:

    通常我不想回答我自己的问题,但我希望它会对某人有所帮助。
    我没有看到其他警告(不是在 Logcat 中,而是在控制台中):

    “Dx 坏类文件魔术(cafebabe)或版本(0033.0000)”

    我在另一个Stackoverflow question 中发现了这个警告。 我用 HexEditor 从不工作的 .jar 打开了一个类文件 并将 Major-Version-Byte 更改为 0x32 并且它起作用了。 我知道这不是一个解决方案,因为课程中可能有 Java 7 的功能, 所以class文件不再起作用,但证明是Java版本的问题

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2015-01-25
      • 1970-01-01
      • 1970-01-01
      • 2015-04-01
      • 2012-04-07
      • 2013-07-08
      • 2017-11-17
      • 1970-01-01
      相关资源
      最近更新 更多