坏的类文件魔术或版本
我已经知道这个问题已经经常被问及答案,但没有一个答案,我发现解决了我的问题。
这是错误的:
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)
。
我在同一天build造和执行应用程序没有多less问题,但现在每次都有这个消息失败。
项目SDK是Android API 19 Platform
,项目级别是1.7
。
CompileSDK是19
,buildToolsVersion是'20.0.0'
.0.0 '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
构build。
我的.jar
文件在libs/
文件夹中。
我使用IntelliJ IDEA 14 Preview,这可能是原因? 随着IntellIJ IDEA 13,它仍然停留在“Gradle同步”
编译文件可能是无用的,因为我已经compile fileTree(dir: 'libs', include: ['*.jar'])
我的JAVA_HOME
variables更改为Java 1.8,并在编译纯java模块作为我的android项目的依赖项时收到此错误消息。
java模块的build.gradle
apply plugin: 'java'
解决scheme#1:快速变脏
我通过将我的JAVA_HOME
重新设置为1.7来修复它:
export JAVA_HOME=`/usr/libexec/java_home -v 1.7`
解决scheme#2:更改编译器版本:
在build.gradle中将此特定模块更改回1.7
apply plugin: 'java' sourceCompatibility = 1.7 targetCompatibility = 1.7
好的,我的不好。
在Project SDK部分,当您添加一个Android SDK
您应该提供Java SDK
而我所有的Android SDK都使用Java 8作为SDK,因此即使Project级别为1.7
,我也不会创build错误版本的类文件知道为什么,我认为一切都是由项目级select)。
现在我改变了SDK( java version "1.x.0"
部分)。
它似乎编译好。
之前工作的原因是因为我的SDK是1.8
而不是Android API x
如果人们发现@Marco Acierno的答案有点不清楚,那么解决scheme就是确保使用Java 7而不是更高的版本。
对于Android Studio,将File -> Project Structure -> SDK Location -> JDK Location
更改为jdk1.7.x
对于命令行,请确保java -version
输出java version "1.7.x"
。
将JAVA_HOME设置回1.7为我工作。
在每个build.grade文件中将所有模块java版本更改为java 1.7。
在插件是库和应用程序
compileOptions{ sourceCompatibility=JavaVersion.VERSION_1_7 targetCompatibility=JavaVersion.VERSION_1_7 }
和在Java中
sourceCompatibility= 1.7 targetCompatibility= 1.7
当您使用不使用Java 6或更高版本的任何function但使用Java 6或更高版本构build的.jar
文件时,会发生此问题。
如果您构build.jar
文件,则不需要在Gradle
或ProGuard
或Compiler Version
更改任何内容。 解决scheme非常简单,只需再次构build.jar
文件,但使用Java 5或更less 。
更多细节 。
我有一个类似的问题,我解决了升级我的proguard。 通过这个命令获得你的proguard版本
java -jar ~/android-sdks/tools/proguard/lib/proguard.jar
从这里获取最新的progaurd.jar文件( http://proguard.sourceforge.net )
用新的.jar文件replace现有的android-sdks / tools / proguard / lib / proguard.jar。
希望这应该可以帮到你。 如果你用java 8,那么你应该升级到proguard 5.x coz proguard 4.x不支持java 8。
有一个类似的问题,当我试图从netbeans添加一个自制的库到android studio。 设置源码和目标兼容性在android studio和源码/二进制格式在NetBeans(都!)到Java 1.7解决了这个问题。
在android工作室:
项目结构 – >模块/应用程序 – > Propreties – >源和目标为1.7
在netbeans中:
文件 – >项目属性 – >源 – >源/二进制格式为1.7
然后清理并构buildnetbeans项目,并将.jar从“NBProj / dist”复制到“app / libs”
如果只安装了Java8,共享案例的解决scheme,只需将Java编译器级别设置为1.7,然后重新生成项目应该是可以的。