В моем приложении не поддерживается версия major.minor 52.0

126

Я пытаюсь скомпилировать свой Android-проект и получаю эту ошибку

[INFO] Exception in thread "main" java.lang.UnsupportedClassVersionError: com/android/dx/command/Main : Unsupported major.minor version 52.0
[INFO]  at java.lang.ClassLoader.defineClass1(Native Method)
[INFO]  at java.lang.ClassLoader.defineClass(ClassLoader.java:800)
[INFO]  at java.security.SecureClassLoader.defineClass(SecureClassLoader.java:142)
[INFO]  at java.net.URLClassLoader.defineClass(URLClassLoader.java:449)
[INFO]  at java.net.URLClassLoader.access$100(URLClassLoader.java:71)
[INFO]  at java.net.URLClassLoader$1.run(URLClassLoader.java:361)
[INFO]  at java.net.URLClassLoader$1.run(URLClassLoader.java:355)
[INFO]  at java.security.AccessController.doPrivileged(Native Method)
[INFO]  at java.net.URLClassLoader.findClass(URLClassLoader.java:354)
[INFO]  at java.lang.ClassLoader.loadClass(ClassLoader.java:425)
[INFO]  at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:308)
[INFO]  at java.lang.ClassLoader.loadClass(ClassLoader.java:358)
[INFO]  at sun.launcher.LauncherHelper.checkAndLoadMain(LauncherHelper.java:482)
[INFO] ------------------------------------------------------------------------
[INFO] BUILD FAILURE
[INFO] ------------------------------------------------------------------------

Я читал в другом сообщении, что попытка компиляции с Java 8 может вызвать эту ошибку, но не в моем случае, у меня следующая версия Java:

java version "1.7.0_79"
OpenJDK Runtime Environment (IcedTea 2.5.5) (7u79-2.5.5-0ubuntu0.14.04.2)
OpenJDK 64-Bit Server VM (build 24.79-b02, mixed mode)

ОС: Linux Mint (у меня не установлена ​​Java 8.) Сборка: MAVEN

Кто-нибудь может мне с этим помочь?

Рафаэль Рейес
источник
2
Похоже, вы используете скомпилированные библиотеки java 8 с локальным jdk 7.
Тейлор,
как я могу это исправить? @Taylor
Рафаэль Рейес
4
переключитесь на jdk 8 или используйте старую версию библиотеки, содержащуюcom/android/dx/command/Main
Taylor
Мне не разрешено переключаться на jdk 8, как можно понизить версию библиотеки, содержащей com / android / dx / command / Main? @Taylor
Рафаэль Рейес
1
Не могу использовать чат, где я нахожусь.
Тейлор

Ответы:

236

Я тоже сталкиваюсь с этой проблемой при создании нового проекта из студии Android.

Мне удалось решить эту проблему, понизив версию buildToolsVersion в настройках приложения gradle: измените строку {имя-модуля} /build.gradle

buildToolsVersion "24.0.0 rc1"

в

buildToolsVersion "23.0.3"


@Edit:
в Android Studio 2.1 перейдите в Файл-> Структура проекта- > Приложение -> Версия инструмента сборки. Измените его на 23.0.3

Выполните описанный выше метод, только если вы используете Java версии 7 и по какой-то причине еще не хотите обновляться до Java 8.

Надеюсь это поможет

Руди Курниаван
источник
@RafaelReyes Я ничего не знаю о создании проекта Android с помощью maven. Но поскольку Android все равно использует инструменты сборки, вы не можете найти, какая версия вашей версии инструмента сборки использовалась в конфигурации maven?
Руди Курниаван,
1
@RudyKurniawanПривет, я полагаю, это <version> 4.1.1.4 </version>
Рафаэль Рейес,
2
Более новая версия: buildToolsVersion "23.0.3"
XurajB
1
это помогло спасибо за ответ, но что делать, если нам нужна сборка 24 ??
shridutt kothari
2
для этого вы должны использовать java 8 для создания своего приложения
Руди Курниаван
43

Скрипты Gradle >> build.gradle (приложение-модуль)

Измените buildToolsVersion "24.0.0" на buildToolsVersion "23.0.3"

источник: опыт

Фебрианто Нугрохо
источник
10
Почему вы рекомендуете этот переход на более раннюю версию? Что оно делает?
J Fabian Meier
Почему 23.0.3 предпочтительнее?
Игорь Ганапольский
31

Первоначально я снизился buildToolsVersionс 24.0.0 rc3до 23.0.3, как указано в ответе Руди Курниавана. Затем я заметил, что у меня в настройках проекта указан jdk 7. Я изменил его на jdk 8, и теперь инструменты сборки 24.0.0 rc3работают.

введите описание изображения здесь

Также важно, чтобы параметры компиляции были следующими java7:

android {
    ...
    compileOptions {
        sourceCompatibility JavaVersion.VERSION_1_7
        targetCompatibility JavaVersion.VERSION_1_7
    }
}
Денис Княжев
источник
Это решило мою проблему с AndroidStudio 2. Я получал кучу странных ошибок.
wmac
В последней версии buildToolsVersion 25.0.1 требуется Java 8.
Игорь Ганапольский 01
14

Я установил Android Studio вместе с Xamarin Visual Studio (уже установлен). После установки (исключая SDK, потому что они уже были установлены) я запустил Android Studio, и он загрузил, установил и добавил недостающие SDK (после указания пути к местоположению SDK). В результате я получил сообщение об ошибке при сборке

java.lang.UnsupportedClassVersionError: com / android / dx / command / Main: неподдерживаемая версия major.minor 52.0

В качестве решения я установил jdk-8u101-windows-i586.exeбез JRE (потому что он уже был установлен). Раньше я пробовал версию x64, но она исчезла ... Затем вам нужно изменить расположение Java Development Kit .

Изменить местоположение JDK

Это делается в Visual Studio, щелкнув Инструменты> Параметры> Xamarin> Настройки Android. Здесь вы можете перейти в нужное место. В моем случае так и было C:\Program Files (x86)\Java\jdk1.8.0_101.

Наконец, очистите свой проект и создайте новую сборку :-)

тестирование
источник
Или установите для свойства MSBuild AndroidSdkBuildToolsVersion более раннюю версию. Например, если у вас также установлена ​​версия 23.0.3, вы можете добавить следующую строку в верхний элемент <PropertyGroup> в файле .csproj проекта Android: <AndroidSdkBuildToolsVersion> 23.0 .3 </AndroidSdkBuildToolsVersion> " ref: releases.xamarin.com/…
samis 08
8

Указанная проблема:

Исключение в потоке «main» java.lang.UnsupportedClassVersionError: com / android / dx / command / Main: неподдерживаемая версия major.minor 52.

вызывается, когда он объявлен внутри build.gradle, buildToolsVersion 24и у нас не установлена ​​Java 8, необходимая для этой версии . Чтобы решить эту проблему, нам нужно изменить buildToolsVersionс 24 на максимум 23:

введите описание изображения здесь

В будущем должна потребоваться Java 8 Android Studio, поэтому мы должны начать использовать Java 8.

Jorgesys
источник
6

У меня была такая же проблема с моей сборкой IntelliJ Maven. Мое «решение» заключалось в том, чтобы зайти в инструменты сборки и удалить папку инструментов сборки 24.0.0. Нашел в {android-sdk-location}/build-tools/справочнике. Это не долгосрочное решение, но оно должно, по крайней мере, вернуть ваш проект в строй. Обновление до Java 8, как многие предлагают, будет лучше в долгосрочной перспективе.

sotrh
источник
Это первый вариант, который я действительно мог бы использовать, потому что я не смог найти настройки, упомянутые в других ответах, в пользовательском интерфейсе Android Studio. Я удалил его, а затем создал новый проект, и он сработал.
Митч
5

Я также столкнулся с этой проблемой при создании нового проекта в eclipse.

  1. Откройте каталог установки eclipse
  2. Откройте файл eclipse.ini
  3. Изменить

    Dosgi.requiredJavaVersion=1.6 

    в

    Dosgi.requiredJavaVersion=1.7

Надеюсь это поможет

user6661437
источник
Я добавляю строку "Dosgi.requiredJavaVersion = 1.7" в /Applications/eclipse/configuration/config.ini. Отлично работает на моей macOS Sierra
Боб Ченг,
Что заставляет вас думать, что вопрос OP связан с Eclipse?
Игорь Ганапольский
5

Здесь никто не говорит, что для Build Tools 24.0.0 требуется Java 8, а у большинства людей есть версия 1.6 или 1.7.

Так что да, установка инструмента сборки на 23.xx «решит» проблему, но основной причиной является версия Java в вашей системе.

В долгосрочной перспективе вы можете обновить среду разработки, чтобы использовать JDK8, чтобы использовать новые языковые улучшения и компилятор jack.

Джей Сидри
источник
5

52 - это код для JDK 8. Вы можете увидеть это здесь: http://javarevisited.blogspot.com/2015/05/fixing-unsupported-majorminor-version.html . Итак, Gradle ожидает, что у вас будет JDK 8 в качестве версии Java по умолчанию на вашем компьютере. Последние версии Gradle для Android не работают с Java 7.

Решение простое: сделайте Java 8 версией jdk по умолчанию на вашем компьютере.

IgorGanapolsky
источник
Как это сделать?
GuidoG 08
@GuidoG Вам необходимо следовать инструкциям по установке для вашей конкретной операционной системы. Просто погуглите, и вы получите подробные инструкции. Цель состоит в том, чтобы иметь возможность запускать java -версию из командной строки и видеть ее как 1.8.
Игорь Ганапольский 08
4

Я использую Android Studio 2.0 и сталкиваюсь с той же проблемой. Решение, предоставленное Руди Курниаваном, помогло решить эту проблему. Затронутый файл можно найти по:

«Проект» -> «Android» -> «Сценарии Gradle» -> «build.gradle (Модуль: приложение)»

Панель « Проект » по умолчанию находится слева. Чтобы найти его, проверьте название боковых вкладок, щелкните его, затем используйте верхнее раскрывающееся поле, чтобы перейти к « Android ». Разверните дерево на панели, чтобы найти целевой файл. Дважды щелкните его, чтобы отредактировать.

coarist
источник
Я использую Intellij IDEA с Maven Build.
Рафаэль Рейес
4

Извините за поздний ответ. Надеюсь, это поможет кому-то другому

Эта проблема связана с вашим SDK, а не с JDK. Вы можете проверить информацию о своей версии из

Справка> О программе> Показать подробности

Вы получите что-то вроде

Xamarin.Android Версия: 6.0.2.1 (версия для начинающих) Android SDK: X: \ Android \ android-sdk

Поддерживаемые версии Android:

4.0.3 (уровень API 15)

4.4 (уровень API 19)

6.0 (уровень API 23)

Версия инструментов SDK: 24.4.1

Версия инструментов платформы SDK: 23.0.1

Версия инструментов сборки SDK: 24 RC2

Пакет SDK для Java: X: \ Program Files (x86) \ Java \ jdk1.7.0_71

версия java "1.7.0_71"

Среда выполнения Java (TM) SE (сборка 1.7.0_71-b14)

Клиентская виртуальная машина Java HotSpot (TM) (сборка 24.71-b01, смешанный режим, совместное использование)

Если вы используете инструменты предварительного просмотра для сборки, вы будете получать похожие ошибки повсюду.

Что делать сейчас?

перейти к

Инструменты -> Менеджер SDK

  1. Выберите все элементы в каналах предварительного просмотра, в том числе Android SDK build toolsс помощью rev 24rc2или 24rc4(последний)

  2. Нажмите на Delete 'n' packages

Как отключить канал предварительного просмотра

  1. В диспетчере SDK выберите

    Инструменты> параметры

  2. Uncheck Enable preview tools

И что

Вернуться к вашему коду Очистите все и перестройте (в редких случаях вам нужно выбрать инструменты сборки на странице настроек проекта)

Хабель Филип
источник
Это сработало для меня нормально. но до этого я установил jdk 8 и изменил каталог, как описано в другом ответе здесь,
Абдур Рахим,
Какое отношение Xamarin имеет к вопросу OP?
Игорь Ганапольский 01
Или установите для свойства MSBuild AndroidSdkBuildToolsVersion более раннюю версию. Например, если у вас также установлена ​​версия 23.0.3, вы можете добавить следующую строку в верхний элемент <PropertyGroup> в файле .csproj проекта Android: <AndroidSdkBuildToolsVersion> 23.0 .3 </AndroidSdkBuildToolsVersion> "
samis 08
2

Спасибо всем за решение.

Я мог бы решить ту же проблему, используя решение ниже.

В свой проект я добавил jar, созданный на Java8. И мой проект имел в виду JRE 7. Когда я изменил проект JRE на 8. Моя проблема решена.

Шаги: в eclipse щелкните правой кнопкой мыши имя проекта в проводнике проекта> путь сборки> библиотеки> щелкните версию jre> щелкните редактировать> установленная JRE> добавить> стандартную виртуальную машину> выберите домашний путь щелчка JRE (путь должен быть localePath \ java \ jdk1 .8.0_25 \ jre)> указать имя> сохранить> выбрать ту же JRE для проекта> завершить> ОК Обновить / собрать проект один раз> попробовать запустить файл java. он должен работать.

Haithem
источник
2

Получить это сообщение об ошибке на сервере сборки travis?

Я исправил свою сборку Travis с помощью buildToolsVersion "24.0.2", используя это

# travis build 
language: android

jdk:
  - oraclejdk8

android:
  components:
    - tools
    - build-tools-24.0.2
    - android-23

    - add-on
    - extra

script:
  - jdk_switcher use oraclejdk8
  - ./gradlew assemble
k3b
источник
это правильно. когда я попытался исправить мою сборку Travis, я нашел этот вопрос, который мне не помог. после того, как я узнал, как исправить, я добавил это для других с той же проблемой
k3b
2

В моем случае jdk по умолчанию был 1.7, затем я изменил его на 1.8, перейдя в ту папку, в которой находится обновленный jdk.

Hedego
источник
это сработало для меня! необходимо установить jdk версии 1.8 и нацелиться на него
hewstone 01
1

У меня была такая же проблема, и я пытался изменить версию, иногда для версии Android Studio в Project> Gradle Scripts> build.gradle (Module: app) вы можете изменить версию. Например:

android {
    compileSdkVersion **23**
    buildToolsVersion **"23.0.3"**

    defaultConfig {
        applicationId "com.example.android.myapplication"
        minSdkVersion **19**
        targetSdkVersion **23**
        versionCode **1**
        versionName **"1.0"**
    }
Глэдис Санчес
источник
1

Из этого вопроса.

Вы можете попробовать изменить уровень компилятора обратно на 1.7 в IDE, которую вы используете.

  • Если вы используете Eclipse, перейдите в Windows ---> Prefences, затем выберите Java и разверните его, затем выберите Compiler и измените уровень соответствия на 1.7.
  • Если вы используете Android Studio, вы можете добавить это в свой build.gradle

    android {
        compileSdkVersion 19
        buildToolsVersion "19.0.0"
    
        defaultConfig {
            minSdkVersion 7
            targetSdkVersion 19
        }
    
        compileOptions {
            sourceCompatibility JavaVersion.VERSION_1_7
            targetCompatibility JavaVersion.VERSION_1_7
        }
    }

Если это не помогло, попробуйте проверить ответ других по указанной выше ссылке и сообщите нам, что вам помогло.

cristianorbs
источник
1
Я использую Maven и IntelliJ.
Рафаэль Рейес
В этом случае вы можете изменить исходный и целевой значения на 1.7 внутри конфигурации в плагине компилятора maven
cristianorbs
1

Ваши инструменты сборки Android не установлены должным образом. Попробуйте установить другую версию инструментов сборки и укажите эту версию в файле gradle. или вы можете перейти в этот каталог

C: \ Users \\ AppData \ Local \ Android \ SDK \ сборки-инструменты

и посмотрите, какие инструменты сборки установлены. Попробуйте изменить версию инструмента сборки в файле gradle и скомпилируйте приложение, чтобы проверить, работает ли оно.

У меня были версии инструментов сборки 22.0.1,23.0.02 и 24.0.0, и работала только старая версия 22.0.1.

Источник: я сам пробовал, и у меня это сработало.

Swathin
источник
1

Эта проблема возникает из-за того, что ваша версия инструмента сборки и JDK не работают вместе. Я использовал JDK версии 7 с инструментом сборки 24.0.1. Конечно, снижение версии инструмента сборки может решить проблему, но это не настоящее решение, так как обновление ваших инструментов сборки в будущем приведет к ее поломке.

Вы должны убедиться, что версия инструмента сборки и JDK работают вместе. Я обновил свой инструмент сборки до последней версии (24.0.1) и установил jdk8. Обязательно установите JAVA_HOME на последнюю версию, а затем попробуйте чистую сборку.

GodOnScooter
источник
1

Возник та же проблема за пределами Android Studio при попытке сборки для Кордовы с использованием sdk из командной строки (сборка кордовы для Android).

Решение, предложенное Руди, работает и в этом случае. Вы просто не переходите на более раннюю версию Build Tools из Android Studio, а делаете это с помощью пользовательского интерфейса android sdk manager.

Андреа Герарди
источник
0

Я только что столкнулся с этой проблемой.

Возврат с «Preview Channel» версий инструментов SDK и инструментов сборки к последней стабильной версии исправил это.

Майк Плейл
источник
0

Изменение com.android.tools.build:gradle:2.2.0-beta1на com.android.tools.build:gradle:2.1.2исправлено для меня.

Моя версия Android Studio - 2.1.2, возможно, поэтому

ericn
источник
0

Самое простое решение - обновить JDK до последней версии. Потому что Кордова поддерживает только последнюю версию JDK.

1 . Прежде всего, вам необходимо обновить Android SDK. Затем,

2. Если вы не можете выполнить обновление через свой терминал, зайдите в программный центр Linux и найдите последнюю версию (которую вы хотите установить) и установите ее.

Затем снова запустите Cordova build .

Это решит проблему.

В моем случае это сработало.

PyDevSRS
источник
0

Вам нужно зайти в каталог установки SDK и убедиться, что подкаталог / build-toolsbuildToolsVersion совпадает с файлом build.gradle вашего приложения: введите описание изображения здесь

IgorGanapolsky
источник
0

Убедитесь, что у вас установлена ​​последняя версия SDK в одном C:\Program Files\JavaилиC:\Program Files (x86)\Java

Затем перейдите в VS2015 и следуйте указаниям пути инструменты - параметры - Xamarin - настройки Android, а в разделе «Местоположение JDK» выберите «Изменить» и перейдите к поиску имеющейся у вас версии x64 или x32.

genomma
источник
0

Я на Кордове, вот что я сделал:

- переименуйте свой проект Android, чтобы было место для нового
- обновите JAVA Development Kit до 1.8 (последний на момент написания этой статьи)
- запуститеcordova platform add android

Теперь должно работать без проблем. Хеш вашего приложения изменится, поэтому, если вы используете его, например, для входа в систему, вам нужно будет обновить его.

mate.gwozdz
источник
0

У меня была эта проблема слишком долго (SO и т. Д. Не помогло), и я только что решил ее (используя sdk 25).

-Файл local.properties proguard.dir var не применялся с ant; Я указал 5.3.2, но для вызова командной строки и подписанной экспортной сборки (eclipse) использовался 4.7 из каталога sdk (только 5+ поддерживает java 8)

Мое решение заключалось в замене банок proguard (каталог android-sdk / tools / proguard / libs) в sdk на текущую (5+) версию proguard.

rndStr
источник
0

Ошибка unsupported-major-minor-version может быть из-за неподдерживаемой версии JDK. Обновите JDK, перейдите в Настройки модуля и измените путь JDK на новый. В большинстве случаев это исправляет ошибку.

Рахит Мурарка
источник
-1

У меня было установлено две версии java jdk. Как только я указал на правильную версию java jdk в File-> Project Structure -> SDK Location до последней версии, которая была у меня в переменной среды JAVA_HOME, проблема исчезла.

Thambu Zk
источник
Это не обязательно решает проблему для сборок из командной строки с Gradle.
Игорь Ганапольский 01