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

在Android Studio中创build一个空项目并包含一个完全编译和完美工作的纯Java模块之后,在该模块中的每个类上都会出现以下错误:

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

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

请注意,我不包含模块作为.jar库,它是用以下指令导入的源代码:

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

Solutions Collecting From Web of "将模块包含到项目中后,得到“不受支持的类文件版本52.0”"

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

build.gradle – 这个构build文件是为模块级别的

 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 } 

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

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

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

目标Java 7并重新编译。

我在构build项目时遇到类似的错误。

 Error:PARSE ERROR Error:unsupported class file version 52.0 

从Java 1.8切换到Java 1.7后,我遇到了这些错误。 我的项目包括几个库,1个应用程序模块,3个Android库模块和2个Java库模块。 我没有更改Android库中的任何内容,但在Java库的build.gradle文件的依赖项中添加了以下几行。

 sourceCompatibility = 1.7 targetCompatibility = 1.7 

它解决了我的问题。 parsing错误主要是因为Java 1.8类无法parsing为Java 1.7类。

我将Android Studio从2.1更新到2.2.2后,第一次得到这个错误,而且因为我的系统只安装了Java 1.7,所以我觉得很困惑。 事实certificate,Android 2.2.2安装了自己的Java 1.8 JRE(C:\ Program Files \ Android \ Android Studio \ jre),因此需要在pure java库的build.gradle中指定sourceCompatibilitytargetCompatibility ,如上所述。

 apply plugin: 'java' dependencies { compile fileTree(include: ['*.jar'], dir: 'libs') sourceCompatibility = 1.7 targetCompatibility = 1.7 }