it-roy-ru.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, то этот модуль будет скомпилирован с JDK 8 использует синтаксис Java 1.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

Oracle Compatibility Guide для Java 8 говорит (частично),

Версия файла класса для Java SE 8 - 52.0 согласно Спецификации JVM. Файлы классов версии 52.0, созданные компилятором Java SE 8, нельзя использовать в более ранних выпусках 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, но добавил следующие строки в зависимости build.gradle файлов библиотек Java.

sourceCompatibility = 1.7
targetCompatibility = 1.7

Это решило проблему для меня. Ошибка разбора была в основном из-за того, что классы Java 1.8 не могли быть проанализированы в классы Java 1.7.

2
Nagaraju Gajula