【问题标题】:ParseException while building with JDK8使用 JDK8 构建时出现 ParseException
【发布时间】:2017-01-31 06:37:50
【问题描述】:

我有一个 android 应用程序,其中有一个具有 build.gradle 文件的模块,如下所示 apply plugin: 'java'

使用 JDK7 可以很好地构建完整的应用程序。但是,当我针对 JDK8 构建此应用程序时,在构建期间 Java 模块中出现异常。

Dex:将字节码转换为 dex 时出错:原因: com.android.dx.cf.iface.ParseException:坏类文件魔术 (cafebabe) 或版本 (0034.0000) 意外的顶级异常:com.android.dx.cf.iface.ParseException:错误的类文件魔术 (cafebabe) 或版本 (0034.0000) 在 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) 在 com.android.dx.command.dexer.Main.processFileBytes(Main.java:673) 在 com.android.dx.command.dexer.Main.access$300(Main.java:83) 在 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) 在 com.android.dx.command.dexer.Main.processAllFiles(Main.java:510) 在 com.android.dx.command.dexer.Main.runMonoDex(Main.java:280) 在 com.android.dx.command.dexer.Main.run(Main.java:246) 在 com.android.dx.command.dexer.Main.main(Main.java:215) 在 com.android.dx.command.Main.main(Main.java:106)

...在解析 com/java/Module.class 时

当我将插件更改为 belowapply plugin: 'com.android.library 时,即使使用 JDK8 也可以正常构建。

在使用 JDK8 构建时,Android 构建中的 Java 插件是否存在任何已知问题?

【问题讨论】:

  • Clean-Rebuild 一开始
  • 在问这个问题之前尝试过多次清洁构建,但是当我再次构建时它仍然是同样的异常
  • 您提到的链接中异常的原因是 'Cause: com.android.dex.DexException: Multiple dex files define..' 。但是我的是“原因:com.android.dx.cf.iface.ParseException: bad class file magic (cafebabe) or version (0034.0000)”
  • 显示你的build.gradle
  • 正如问题'apply plugin:'java''中提到的,我的build.gradle文件中只有一行,它是用JDK7成功构建的

标签: java android gradle java-8


【解决方案1】:

我在 build.gradle 文件中添加了这一行,它使用 JDK8 成功构建

sourceCompatibility = 1.7

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多