糟糕的类文件魔法或版本糟糕的类文件魔法或版本(Bad class file magic or ver

2019-05-09 07:37发布

我已经知道这个问题已经被问经常和答案,但没有我发现答案的一个固定我的问题。

这是错误:

Error:Gradle: Execution failed for task ':ffcommunity:preDexDebug'.
 com.android.ide.common.internal.LoggedErrorException: Failed to run command:
    D:\Android SDK\sdk\build-tools\20.0.0\dx.bat --dex --output D:\Users\ReVo\Documents\IntelliJ IDEA\FFCommunity\ffcommunity\build\intermediates\pre-dexed\debug\bananaquery-2ee85432877a057e7414910b8127805535139d5d.jar D:\Users\ReVo\Documents\IntelliJ IDEA\FFCommunity\ffcommunity\libs\bananaquery.jar
Error Code:
    1
Output:
    UNEXPECTED TOP-LEVEL EXCEPTION:
    com.android.dx.cf.iface.ParseException: bad class file magic (cafebabe) or version (0034.0000)
        at com.android.dx.cf.direct.DirectClassFile.parse0(DirectClassFile.java:472)
        at com.android.dx.cf.direct.DirectClassFile.parse(DirectClassFile.java:406)
        at com.android.dx.cf.direct.DirectClassFile.parseToInterfacesIfNecessary(DirectClassFile.java:388)
        at com.android.dx.cf.direct.DirectClassFile.getMagic(DirectClassFile.java:251)
        at com.android.dx.command.dexer.Main.processClass(Main.java:665)
        at com.android.dx.command.dexer.Main.processFileBytes(Main.java:634)
        at com.android.dx.command.dexer.Main.access$600(Main.java:78)
        at com.android.dx.command.dexer.Main$1.processFileBytes(Main.java:572)
        at com.android.dx.cf.direct.ClassPathOpener.processArchive(ClassPathOpener.java:284)
        at com.android.dx.cf.direct.ClassPathOpener.processOne(ClassPathOpener.java:166)
        at com.android.dx.cf.direct.ClassPathOpener.process(ClassPathOpener.java:144)
        at com.android.dx.command.dexer.Main.processOne(Main.java:596)
        at com.android.dx.command.dexer.Main.processAllFiles(Main.java:498)
        at com.android.dx.command.dexer.Main.runMonoDex(Main.java:264)
        at com.android.dx.command.dexer.Main.run(Main.java:230)
        at com.android.dx.command.dexer.Main.main(Main.java:199)
        at com.android.dx.command.Main.main(Main.java:103)
    ...while parsing com/comuf/revonline/bananaquery/BananaInsert.class
    1 error; aborting

该错误是bad class file magic (cafebabe) or version (0034.0000)

我建造并在同一天没有问题执行应用程序很多次,但现在这与此消息每次失败。


项目SDK是Android API 19 Platform和项目水平是1.7

CompileSDK是19和buildToolsVersion是'20.0.0'

编译选项:

compileOptions {
    sourceCompatibility JavaVersion.VERSION_1_7
    targetCompatibility JavaVersion.VERSION_1_7
}

dependencies我有:

compile files('libs/bananaquery.jar')

图书馆是建立与SDK Android API 19 Platform与项目水平1.7

.jar文件内libs/文件夹中。

我使用的IntelliJ IDEA 14预览,它可能是什么原因? 随着IntelliJ IDEA的13仍然停留在“摇篮同步”

编译的文件可能是无用的,因为我有compile fileTree(dir: 'libs', include: ['*.jar'])

Answer 1:

我的JAVA_HOME变量改变为Java 1.8和编译纯Java模块作为我的Android项目的依赖,当我得到这个错误讯息。

了Java模块的build.gradle

apply plugin: 'java'

解决方案#1:快速的脏

我固定它通过设置我的JAVA_HOME回1.7:

export JAVA_HOME=`/usr/libexec/java_home -v 1.7`

解决方案#2:改变编译器版本:

改回1.7在它的build.gradle这个特定的模块

apply plugin: 'java'
sourceCompatibility = 1.7
targetCompatibility = 1.7


Answer 2:

好吧,我的坏。

在项目SDK部分,当你添加一个Android SDK ,你应该提供Java SDK和我所有的Android软件开发工具包使用Java 8 SDK所以它创建了错误版本的类文件,即使该项目水平是1.7 (我不知道为什么,我认为这一切是通过项目级选用)。

现在我改变了SDK(在java version "1.x.0"的一部分。)

它似乎编译罚款。

今天之前工作的原因是因为我的SDK是1.8而不是Android API x



Answer 3:

如果人们发现@Marco Acierno的回答是有点不清楚,解决的办法是,以确保您的Java 7,而不是更高版本构建。

对于Android的工作室,改变File -> Project Structure -> SDK Location -> JDK Locationjdk1.7.x 。 对于命令行,保证java -version输出java version "1.7.x"



Answer 4:

设置JAVA_HOME回到1.7为我工作。



Answer 5:

在每一个build.grade文件更改所有模块的Java版本为Java 1.7。

在插件,它是库和应用

compileOptions{
    sourceCompatibility=JavaVersion.VERSION_1_7
    targetCompatibility=JavaVersion.VERSION_1_7
}

而在Java

sourceCompatibility= 1.7
targetCompatibility= 1.7


Answer 6:

当你使用会出现此问题.jar未使用Java 6或更高版本的任何功能,但使用Java 6或更高始建文件。

如果你建立了.jar文件,那么你不需要改变任何GradleProGuardCompiler Version 。 该解决方案是非常简单,只需要构建.jar再次文件,但使用Java 5或更低

更多细节 。



Answer 7:

我有一个类似的问题,我通过升级我的proguard的解决了这个问题。 通过这个命令得到您的ProGuard版本

java -jar ~/android-sdks/tools/proguard/lib/proguard.jar 

从这里获取最新的progaurd.jar文件( http://proguard.sourceforge.net )

取代现有的Android的SDK /工具/ proguard的/ lib /下的新的.jar文件proguard.jar。

这应该可以帮助你。 如果妳使用Java 8,那么你应该升级到ProGuard的5.x的堂妹proguard的4.x版不支持java 8。



Answer 8:

也有类似的问题,当我试图将NetBeans到Android工作室添加一个自制库。 设置在NetBeans(两者)在Android Studio中和源/二进制格式的源代码与目标兼容到Java 1.7解决了这个问题。

在Android Studio中:

项目结构 - >模块/应用程序 - > Propreties - >源代码与目标1.7

在NetBeans:

文件 - >项目属性 - >来源 - >来源/二进制格式1.7

那么干净,建立自己的NetBeans PROJEKT和“NBProj / DIST”到“应用程序/库”复制的.jar



Answer 9:

分享,如果只安装了Java8,只需设置Java编译器级别到1.7,然后重建项目应该是OK的情况下的解决方案。



文章来源: Bad class file magic or version