Gradle Build FAILED - 糟糕的类文件魔法(cafebabe)或版本(0034.0000)

时间:2015-10-25 19:43:01

标签: android gradle android-gradle

我正在尝试编译由应用程序和具有多个依赖项的模块(lambdj,org.json,gson,okhttp)组成的简单Android应用程序。

但我在编译时遇到这个错误,我无法弄清楚如何解决它(以及问题出在哪里)

:app:preDexDebug
UNEXPECTED TOP-LEVEL EXCEPTION:
java.lang.RuntimeException: Exception parsing classes
    at com.android.dx.command.dexer.Main.processClass(Main.java:752)
    at com.android.dx.command.dexer.Main.processFileBytes(Main.java:718)
    at com.android.dx.command.dexer.Main.access$1200(Main.java:85)
    at com.android.dx.command.dexer.Main$FileBytesConsumer.processFileBytes(Main.java:1645)
    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:672)
    at com.android.dx.command.dexer.Main.processAllFiles(Main.java:574)
    at com.android.dx.command.dexer.Main.runMonoDex(Main.java:311)
    at com.android.dx.command.dexer.Main.run(Main.java:277)
    at com.android.dx.command.dexer.Main.main(Main.java:245)
    at com.android.dx.command.Main.main(Main.java:106)
Caused by: 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.parseClass(Main.java:764)
    at com.android.dx.command.dexer.Main.access$1500(Main.java:85)
    at com.android.dx.command.dexer.Main$ClassParserTask.call(Main.java:1684)
    at com.android.dx.command.dexer.Main.processClass(Main.java:749)
    ... 12 more
1 error; aborting
Error:Execution failed for task ':app:preDexDebug'.
> com.android.ide.common.process.ProcessException: org.gradle.process.internal.ExecException: Process 'command 'C:\Program Files\Java\jdk1.8.0_31\bin\java.exe'' finished with non-zero exit value 1
Information:BUILD FAILED

2 个答案:

答案 0 :(得分:0)

堆栈跟踪对我来说不是很清楚...经过一些搜索我找到了这个帖子(Using lambdaj in android)。

发表的唯一答案建议检查hamcrest库(lambdaj的依赖关系,版本1.1),所以我决定在我的gradle构建配置中添加最新的hemcrest lib(1.3版本)。

sudo apt-get install texlive-fonts-recommended

项目建设成功!

希望它有所帮助!

更新

我的项目中有 lambdaj 的问题,这个库并不完全兼容。我搬到 retrolambda ,看看吧!

答案 1 :(得分:0)

这通常是由在非Java 8项目上使用Java 8库引起的,反之亦然。

对我来说,解决方法是在我的项目和我使用的库上使用retrolambda:

在主build.gradle文件中:

buildscript {
    repositories {
        jcenter()
    }
    dependencies {
        classpath 'com.android.tools.build:gradle:1.5.0'

        // NOTE: Do not place your application dependencies here; they belong
        // in the individual module build.gradle files
        classpath 'me.tatarka:gradle-retrolambda:3.2.4'
    }
}

然后在你的app / library build.gradle文件顶部:

apply plugin: 'me.tatarka.retrolambda'

还要确保将其设置为Java 8:

android {

    ...

    compileOptions {
        sourceCompatibility JavaVersion.VERSION_1_8
        targetCompatibility JavaVersion.VERSION_1_8
    }
}

retrolambda插件在编译时执行并对您的代码应用Java8 lambda支持,请参阅https://github.com/evant/gradle-retrolambda以获取有关其功能的更多信息。

相关问题