我正在尝试编译由应用程序和具有多个依赖项的模块(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
答案 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以获取有关其功能的更多信息。