【问题标题】:Dexifying a jar file compiled by JDK 6 gives "bad class file magic" errorDexifying JDK 6 编译的 jar 文件会出现“bad class file magic”错误
【发布时间】:2013-08-01 09:50:37
【问题描述】:

我正在尝试使用以下命令对 jar 文件进行 dexify:

dx --dex --output=classes.dex JAR_file.jar

这给了我以下错误:

    trouble processing:
    bad class file magic (cafebabe) or version (0033.0000)
    .....................etc

当我搜索时,我发现它们与this问题中出现的错误相同

是的,我正在使用 JDK 1.7 编译我的项目。所以我下载了 JDK 1.6,并更改了我的 eclipse 的设置,使其使用 JDK 1.6。

我通过以下方式做到这一点:Window->Preferences->Compiler,然后我将编译器编译级别设置为 1.6。最后,我将编译器配置为使用我下载的 JRE6。我点击确定。我尝试再次运行我的项目,并生成了 jar 文件。

当我再次运行该 jar 文件的 dexifying 命令时。它仍然显示相同的错误。我错过了什么?

注意:jar 文件是我在 Eclipse 中作为“插件”项目创建的一个包。这是项目的快照:

在我所指的问题中,接受的答案是如果您仍然遇到同样的问题,那么您必须确保每个类都编译正确。那是什么意思?我一次又一次地尝试编译,但我仍然得到同样的错误。

【问题讨论】:

    标签: android bundle java dex jdk6


    【解决方案1】:

    我创建了一个全新的项目(在将我的 eclipse 编译器更改为 JDK 1.6 之后)。然后,dexifying 工作正常。

    【讨论】:

      【解决方案2】:

      如果您查看 Proguard.bat (Android SDK\tools\proguard\bin),您会发现以下行:

      call %java_exe% -jar "%PROGUARD_HOME%"\lib\proguard.jar %*

      将其替换为以下内容:

      call %java_exe% -jar "%PROGUARD_HOME%"\lib\proguard.jar %1 %2 %3 %4 %5 %6 %7 %8 %9

      提到here

      【讨论】:

      • 这是我的 Proguard.bat 中的内容。和你说的不完全一样。我觉得它是关键文件,所以我想要完全匹配和完全替换。 @ECHO OFF REM ProGuard 的启动脚本——免费的类文件收缩器、优化器、REM 混淆器和 Java 字节码的预验证器。 REM REM 注意:当将包含空格的文件名传递给这个脚本时,REM 你必须在它们周围添加转义引号,例如REM "\"C:/My Directory/My File.txt\"" IF EXIST "%PROGUARD_HOME%" GOTO home SET PROGUARD_HOME=.. :home java -jar "%PROGUARD_HOME%"\lib\proguard.jar %*
      • 我将 -jar "%PROGUARD_HOME%"\lib\proguard.jar %* 替换为:-jar "%PROGUARD_HOME%"\lib\proguard.jar %1 %2 %3 %4 % 5 %6 %7 %8 %9 但是当我再次编写命令时,它显示了同样的错误。
      • 我会继续寻找,看看能不能找到别的东西。
      • 您的项目中是否有任何框架设置为 1.7 的 sdk 级别? stackoverflow.com/questions/8748977/…
      • 可能。不过我不确定。而且我不知道如何检查我是否有这样的框架。所以我正在寻找一个快速解决所有问题的方法。但是我确实有一种很好的感觉,并不是所有的类都是用 JDK 6 编译的。顺便说一下,你可以在我附上的图片中看到我使用的是 1.7 编译的一个库。我将此更新为1.6。但是,它仍然没有用。我会尝试更多。谢谢你的帮助。如果您发现了什么,请告诉我。
      猜你喜欢
      • 2023-01-27
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-04-22
      • 1970-01-01
      • 2020-03-30
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多