android - 对 JDK 6 编译的 jar 文件进行 Dex 化时出现 "bad class file magic"错误

标签 android bundle java dex jdk6

我尝试使用以下命令来dexify一个jar文件:

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。

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

当我再次运行该命令来对该 jar 文件进行索引化时。它仍然显示相同的错误。我缺少什么?

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

enter image description here

在我提到的问题中,公认的答案是,如果您仍然遇到同样的问题,那么您必须确保每个类都正确编译。这意味着什么?我尝试一次又一次地编译,但仍然遇到相同的错误。

最佳答案

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

调用 %java_exe% -jar "%PROGUARD_HOME%"\lib\proguard.jar %*

将其替换为以下内容:

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

提到here

关于android - 对 JDK 6 编译的 jar 文件进行 Dex 化时出现 "bad class file magic"错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17977692/

相关文章:

Android fragment 事务 - 替换 fragment 会使旧 fragment 处于奇怪状态

java - AsyncTask 工作不太正确(Android)

android - 将 List<String> 放入 Bundle

java - 如何使用 JsonAutoDetect 实现旧 Firebase 中可用的技巧?

java - 缓存大对象并在需要时反序列化它们 (Java)

javascript - 代码不适用于 Phonegap 应用程序 -Android

android - 如何获取 1 个月的 GPRS 移动数据使用量?

android - 生成已签名的 Bundle 需要您将 Android Gradle 插件更新到 3.2.0 或更高版本

javascript - Bundler 和 Minifier 未在 Visual Studios 2017 中缩小 JavaScript 文件

java - 有没有办法将本地数据库添加到 netbeans java 项目包中?