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