将模块包含到项目后得到“不受支持的类文件版本 52.0”

新手上路,请多包涵

在 Android Studio 中创建一个空项目并包含一个纯 java 模块后,它可以自行编译和完美运行,我在该模块中的每个类上都收到以下错误:

Error:PARSE ERROR: Error:unsupported class file version 52.0

我尝试使用嵌入式 JDK 和我系统上的 JDK 8 (1.8.0_91) 运行该项目,结果是一样的。

请注意,我没有将模块包含为 .jar 库,它是源代码,使用以下指令导入:

 include ':app', ':my-module'
project(':my-module').projectDir = new File(settingsDir, '../my-module-java')

原文由 Sébastien 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 403
2 个回答

明白了,错误是因为我没有在模块本身中指定兼容性选项。这意味着如果您已经安装并使用 JDK 8 并且您的 android 项目使用 Java 1.7(默认情况下在 Android SDK 23 及以下版本中)并且它包含一个模块但没有任何使用 Java 1.7 的规范,那么该模块将被编译使用 Java 1.8 语法的 JDK 8 会出现错误,因为它们不兼容,并且使用 Java 1.7 的编译器无法解析针对 Java 1.8 且版本为 52 的类文件。

build.gradle - 此构建文件用于模块级别

apply plugin: 'java'

buildscript {
    tasks.withType(JavaCompile) {
        sourceCompatibility = JavaVersion.VERSION_1_7
        targetCompatibility = JavaVersion.VERSION_1_7
    }
}

dependencies {
    compile fileTree(include: ['*.jar'], dir: 'libs')

    // Your libraries here

}

原文由 Sébastien 发布,翻译遵循 CC BY-SA 3.0 许可协议

_我知道,我指定目标版本 17

Java 8 的 Oracle 兼容性指南 说(部分),

根据 JVM 规范,Java SE 8 的类文件版本为 52.0。 Java SE 8 编译器生成的 52.0 版类文件不能用于早期版本的 Java SE。

以 Java 7 为目标并重新编译。

原文由 Elliott Frisch 发布,翻译遵循 CC BY-SA 3.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题