首页 文章

用scala“坏类文件魔法”构建android应用程序

提问于
浏览
0

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

意外的顶级异常:com.android.dx.cf.iface.ParseException:com.android.dx.cf.direct.DirectClassFile.parse0中的错误类文件magic(cafebabe)或版本(0034.0000)(DirectClassFile.java: 472)com.android.dx.cf.direct.DirectClassFile.parse(DirectClassFile.java:406)位于com.android.dx的com.android.dx.cf.direct.DirectClassFile.parseToInterfacesIfNecessary(DirectClassFile.java:388)位于com.android.dx.command.dexer.Main.processFileBytes的com.android.dx.command.dexer.Main.processClass(Main.java:704)中的.cf.direct.DirectClassFile.getMagic(DirectClassFile.java:251) (Main.java:673)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的com.android.dx.cf.direct.ClassPathOpener.processOne(ClassPathOpener.java:166) . com.android.dx.command.dex中的cf.direct.ClassPathOpener.process(ClassPathOpener.java:144) er.Main.processOne(Main.java:632)at com.android.dx.command.dexer.Main.processAllFiles(Main.java:510)at com.android.dx.command.dexer.Main.runMonoDex(Main . java:280)com.android.dx.command.dexer.Main.run(Main.java:246)com.android下的com.android.dx.command.dexer.Main.main(Main.java:215) .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

    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完全重建项目可能会使问题消失 .

  • 0

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

  • 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

相关问题