Получил "неподдерживаемый файл класса версии 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')

Ответ 1

Понял, ошибка произошла потому, что я не указал параметры совместимости в самом модуле. Это означает, что если вы установили и используете 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

}

Ответ 2

Я знаю, я указываю целевую версию 1_7

Руководство по совместимости Oracle для Java 8 (частично),

Версия файла класса для Java SE 8 составляет 52.0 согласно спецификации JVM. Файлы классов версии 52.0, созданные компилятором Java SE 8, не могут использоваться в более ранних версиях Java SE.

Нацельте Java 7 и перекомпилируйте.

Ответ 3

У меня возникли подобные ошибки при создании проекта.

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.

Ответ 4

Я впервые получил эту ошибку после обновления Android Studio от 2.1 до 2.2.2 и был озадачен тем, что в моей системе был установлен только Java 1.7, или так я думал. Оказывается, Android 2.2.2 устанавливает собственный Java 1.8 JRE (C:\Program Files\Android\Android Studio\jre), поэтому необходимо указать sourceCompatibility и targetCompatibility в build.gradle для чистых java-библиотек, объяснено выше.

apply plugin: 'java'

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