在将模块包含在项目中后,出现“不受支持的类文件版本 52.0”

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

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

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

请注意,我没有将模块作为库包含在内,它是源代码,它通过以下说明导入:.jar

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

答案 1

知道了,错误是因为我没有在模块本身中指定兼容性选项。这意味着如果您已经安装并使用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

}

答案 2

我知道,我指定了目标版本 1_7

Oracle Compatibility Guide for Java 8 说(部分),

根据 JVM 规范,Java SE 8 的类文件版本是 52.0。Java SE 8 编译器生成的 V52.0 类文件不能在早期版本的 Java SE 中使用。

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


推荐