web-dev-qa-db-ja.com

モジュールをプロジェクトに含めた後、「サポートされていないクラスファイルバージョン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')
23
Sébastien

エラーは、モジュール自体に互換性オプションを指定しなかったためです。つまり、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

}
38
Sébastien

私は知っています、ターゲットバージョン1_7を指定します

Java 8 のOracle互換性ガイドは、(部分的に)と述べています

Java SE 8のクラスファイルバージョンは、JVM仕様に従って52.0です。Java SE 8コンパイラによって生成されるバージョン52.0クラスファイルは、以前のバージョンでは使用できませんJava SE。

ターゲットJava 7および再コンパイル。

3
Elliott Frisch

プロジェクトのビルド中に同様のエラーに直面しました。

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クラスに解析できなかったためです。

2
Nagaraju Gajula