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')
エラーは、モジュール自体に互換性オプションを指定しなかったためです。つまり、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
}
私は知っています、ターゲットバージョン1_7を指定します
Java 8 のOracle互換性ガイドは、(部分的に)と述べています
Java SE 8のクラスファイルバージョンは、JVM仕様に従って52.0です。Java SE 8コンパイラによって生成されるバージョン52.0クラスファイルは、以前のバージョンでは使用できませんJava SE。
ターゲットJava 7および再コンパイル。
プロジェクトのビルド中に同様のエラーに直面しました。
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
それは私のために問題を解決しました。解析エラーの主な原因は、Java 1.8クラスをJava 1.7クラスに解析できなかったためです。