Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/322.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java Dx坏类文件魔术(cafebabe)或带有ADK14的版本(0033.0000)_Java_Android - Fatal编程技术网

Java Dx坏类文件魔术(cafebabe)或带有ADK14的版本(0033.0000)

Java Dx坏类文件魔术(cafebabe)或带有ADK14的版本(0033.0000),java,android,Java,Android,自从转到ADK14后,我无法在我的Windows 7系统上构建新的APK以供发布 生成失败,出现“转换为dalvik格式失败,错误为1”,而控制台中充满大量“Dx坏类文件魔术(cafebabe)或版本(0033.0000)” 全文如下: com.android.ide.eclipse.adt.internal.build.DexException: Conversion to Dalvik format failed with error 1 at com.android.ide.eclipse

自从转到ADK14后,我无法在我的Windows 7系统上构建新的APK以供发布

生成失败,出现“转换为dalvik格式失败,错误为1”,而控制台中充满大量“Dx坏类文件魔术(cafebabe)或版本(0033.0000)”

全文如下:

com.android.ide.eclipse.adt.internal.build.DexException: Conversion to Dalvik format failed with error 1
at com.android.ide.eclipse.adt.internal.build.BuildHelper.executeDx(BuildHelper.java:740)
at com.android.ide.eclipse.adt.internal.project.ExportHelper.exportReleaseApk(ExportHelper.java:204)
at com.android.ide.eclipse.adt.internal.wizards.export.ExportWizard.doExport(ExportWizard.java:290)
at com.android.ide.eclipse.adt.internal.wizards.export.ExportWizard.access$0(ExportWizard.java:229)
at com.android.ide.eclipse.adt.internal.wizards.export.ExportWizard$1.run(ExportWizard.java:214)
at org.eclipse.jface.operation.ModalContext$ModalContextThread.run(ModalContext.java:121)
我正在构建一个使用了很多库的老项目,所以问题大概与这个事实有关。已经完成了迁移到ADK14时建议的所有“修复属性”/“清理”等操作(因为我自然会遇到所有这些问题),但他们没有对此提供帮助

所有库都在同一个Android SDK和JDK/JRE版本上,所以这似乎不是问题。事实上,该应用程序很容易在调试中构建,并安装在我的旧版本1.5 HTC Magic上-只有当我需要导出签名的应用程序包时,才会出现故障

[编辑] 这是在Windows7x64 PC上。我观察到,在我的Linux笔记本电脑(LucidLynx)上为完全相同的代码打包apk绝对没有任何问题

有什么想法吗?对此感到非常沮丧

注意


显然,此错误消息可能由各种不同的问题触发。我的特殊问题与Java 6/7无关,因为我从来没有安装过Java 7,而且编译器符合性设置为Java 6(我当时检查过,正如我在别处看到的解决方案所建议的那样)。

为了让可能有相同问题的人受益:

移除proguard允许apk的导出工作。然而,为什么Proguard可以在Linux上工作而不能在Windows上工作仍然是个谜

该问题现已在以下Android项目中报告:


如果您遇到相同的问题,请启动它。

我终于找到了这个问题的解决方案

如果您查看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

这是一个愚蠢的老问题,我意识到我以前见过,现在我已经弄明白了。很明显,Android SDK团队还没有解决这个问题,在我干净地安装Android SDK时重新引入了这个问题。

我尝试了其他几种解决方案。帮助我的是下载最新版本的ProGuard,并将其复制到android sdk/tools/ProGuard/bin和lib中。

在阅读dex工具的源代码时,这里的问题是类文件不在它可以理解的版本中。版本必须介于45-50(主版本)之间。此处使用的版本是0033.0000(十六进制为0x33),十进制为51(版本号表示Java 7)。这不是我的猜测,我直接在源代码中发现了这一点


以下是推测,以及解决我的问题的方法:我还没有弄清楚在使用各种选项编译时,您需要做些什么来确定您将获得什么样的类文件版本,但对我来说,问题是我的库是使用Java 7编译的。由于Android只支持Java 5或6,我只需在6中重新编译,然后boom就解决了。

用Java 6而不是7编译对我来说是可行的,但只有在我将Eclipse配置为“了解”我的JRE6安装路径之后。以前我只在Eclipse中设置了JRE7。我可以将我的编译器遵从性级别设置为1.6或1.5,但显然没有相应的JRE,它实际上没有任何效果。我真的不明白为什么会这样——JRE与编译有什么关系,它与Android代码有什么关系

将EclipseJava版本更改为6适合我。在Eclipse中,转到Windows->Preferences->Java->Compiler并将“Compiler compliance level”设置为1.6


奇怪的是,我有Eclipse3.7.0,它工作得很好,而其他计算机有3.7.1,在那里构建的jar文件不工作…

我通过右键单击Java项目->构建路径->配置构建路径解决了这个问题 转到“库”选项卡,选择JavaSE-1.7->按编辑,然后更改为JavaSE-1.6 按finish然后单击ok

转到Android项目,右键单击项目->构建路径->配置构建路径 转到“订购和导出”选项卡,选中java项目和包含的其他库旁边的复选框。 单击“确定”。 在Android项目中,删除“gen”和“bin”。 之后不久,这两个文件夹将重新生成(如果没有,请确保您已经以管理员身份运行了eclipse)


现在试着在手机上运行android项目。Wala它的工作原理:)

我在Eclipse中解决了这个问题,方法是转到右侧窗口中的
Windows-->首选项Java-->编译器
,选择
Compiler compliance level
1.6
,单击
Apply
Ok


干净构建
所有应该解决这个问题的项目

在只安装JDK1.7的情况下,您可以使用Maven的编译器插件轻松绕过这个错误。查看如何执行此操作。

对于搜索此错误消息的其他人,另一个可能的原因是您包含了为java 7构建的库。对我们来说,调整这些构建以专门针对Java6(然后构建新的JAR)解决了这个问题

如果使用ant构建,您可以通过向javac标记添加以下属性来实现这一点:

<javac
    ...
    source="1.6" target="1.6"
    ...
    >

我收到了相同的错误消息dexing无法工作 “Dx坏类文件魔术(cafebabe)或版本(0033.0000)”


我安装了JDK1.7、Eclipse开普勒、AndroidSDK-19(Android 4.4)。如果有任何更新,最后运行android sdk windows/sdk Manager.exe工具。原来我有19级sdk,但Tools/AndroidSDK构建工具部分是18.1.1。安装了构建工具19.0.3,编译开始正常工作。

我在jar->dex转换过程中遇到了这个错误消息。问题出在一个损坏的jar文件中。

如果您使用的是Android Studio,可以通过u
javac -source 1.6 -target 1.6 ...
apply plugin: 'java'
sourceCompatibility = 1.6
targetCompatibility = 1.6
+------------+-----------+
|Java SE 1.9 | 0035.0000 |
|Java SE 1.8 | 0034.0000 |
|Java SE 1.7 | 0033.0000 |
|Java SE 1.6 | 0032.0000 |
+------------+-----------+
File/Project Structure
android {
   ...
   compileOptions {
      sourceCompatibility JavaVersion.VERSION_1_6
      targetCompatibility JavaVersion.VERSION_1_6
    }
sourceCompatibility= 1.6
targetCompatibility= 1.6