用scala构建android应用程序"糟糕的类文件魔法"

时间:2015-07-18 15:33:25

标签: java android scala android-studio

我的应用突然停止在Android Studio中构建。消息:

  

意外的顶级例外情况:   com.android.dx.cf.iface.ParseException:错误的类文件魔法   (cafebabe)或版本(0034.0000)at   com.android.dx.cf.direct.DirectClassFile.parse0(DirectClassFile.java:472)     在   com.android.dx.cf.direct.DirectClassFile.parse(DirectClassFile.java:406)     在   com.android.dx.cf.direct.DirectClassFile.parseToInterfacesIfNecessary(DirectClassFile.java:388)     在   com.android.dx.cf.direct.DirectClassFile.getMagic(DirectClassFile.java:251)     在com.android.dx.command.dexer.Main.processClass(Main.java:704)at   com.android.dx.command.dexer.Main.processFileBytes(Main.java:673)at at   com.android.dx.command.dexer.Main.access $ 300(Main.java:83)at   com.android.dx.command.dexer.Main $ 1.processFileBytes(Main.java:602)     在   com.android.dx.cf.direct.ClassPathOpener.processArchive(ClassPathOpener.java:284)     在   com.android.dx.cf.direct.ClassPathOpener.processOne(ClassPathOpener.java:166)     在   com.android.dx.cf.direct.ClassPathOpener.process(ClassPathOpener.java:144)     在com.android.dx.command.dexer.Main.processOne(Main.java:632)at   com.android.dx.command.dexer.Main.processAllFiles(Main.java:510)at at   com.android.dx.command.dexer.Main.runMonoDex(Main.java:280)at at   com.android.dx.command.dexer.Main.run(Main.java:246)at   com.android.dx.command.dexer.Main.main(Main.java:215)at   com.android.dx.command.Main.main(Main.java:106)...解析时   pl / qus / xenoamp / helper / XenoScala $ .class 1错误;中止

我没有更改JDK版本或AS版本......

但是我已经检查了默认的Java环境并将其设置为1.8。将其更改为1.7会产生不同的错误:

错误:原因:scala / util / Properties $:不支持的major.minor版本52.0

更多信息:虽然我的Scala库是为60.0(Java 6)编译的,但在构建gradle缓存期间,确实为52.0构建了一个版本:

〜.gradle \缓存\模块-2 \文件-2.1 \ org.scala琅\阶库\ 2.12.0-M2 \ 8453b80505a57d429f321b94e1fb4ca09b037fc0

出了什么问题?我该怎么办?!

3 个答案:

答案 0 :(得分:0)

According to this answer,看来ParseException的原因是使用Java 1.8。

似乎"不支持的major.minor版本52.0"错误是由于运行时与编译时代码不兼容。我相信major.minor 52.0对应Java 1.8,而51.0对应Java 1.7。使用Java 1.7完全重建项目可能会使问题消失。

答案 1 :(得分:0)

切换到1.7并确保您依赖的任何库(特别是scala标准库)是为1.7构建的 - 从该错误看来,类路径上的scala.util.Properties(即scala标准库)是专为1.8。

答案 2 :(得分:0)

好的,再次供将来参考。这是由build.gradle的一个小变化引起的。从

compile 'org.scala-lang:scala-library:2.11.+'

compile 'org.scala-lang:scala-library:2.+'

Scala 2.11编译为Java 6,Scala 2.12 - Java 8

相关问题