У моєму додатку не підтримується 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
Тейлор

Мені заборонено переходити на jdk 8, як можна знизити версію бібліотеки, що містить com / android / dx / command / Main? @Taylor
Рафаель Рейєс

1
Не вдається використовувати чат із того, де я є.
Тейлор

Відповіді:


236

Я теж стикаюся з цією проблемою, коли створюю новий проект від андроїд-студії.

Мені вдалося вирішити це за допомогою пониження рівня buildToolsVersion у налаштуваннях ступеня програми: змінити {ім'я модуля} /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. Але оскільки в будь-якому випадку андроїд використовує інструменти побудови, чи ви не можете знайти, яку версію версії інструменту побудови використовували в конфігурації Maven?
Руді Курняван

1
@RudyKurniawanHi, я думаю, це <version> 4.1.1.4 </version>
Рафаель Рейєс

2
Новіша версія: buildToolsVersion "23.0.3"
XurajB

1
це допомогло спасибі за відповідь, але що робити, якщо нам потрібно побудувати 24 ??
shridutt kothari

2
для цього вам слід використовувати java 8 для створення свого додатка
Rudy Kurniawan


31

Спочатку я був знижений buildToolsVersionвід 24.0.0 rc3до 23.0.3, як зазначено у відповіді Rudy Курніаван в. Тоді я помітив, що в налаштуваннях проекту я вказав 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.
IgorGanapolsky

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.

Нарешті, очистіть свій проект та створіть нову збірку :-)


"Або встановіть властивість AndroidSdkBuildToolsVersion MSBuild на попередню версію. Наприклад, якщо у вас також встановлена ​​версія 23.0.3, ви можете додати наступний рядок у верхній елемент <PropertyGroup> у файлі проекту .csproj .csproj: <AndroidSdkBuildToolsVersion> 23.0 .3 </ AndroidSdkBuildToolsVersion> » реф: releases.xamarin.com / ...
саами

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.


6

У мене була така ж проблема зі складанням IntelliJ Maven. Моє "рішення" полягало в тому, щоб зайти в інструменти збирання та видалити папку інструментів збирання 24.0.0. Я знайшов це в {android-sdk-location}/build-tools/каталозі. Це не довгострокове вирішення, але це, принаймні, має відновити ваш проект знову. Оновлення до Java 8, як багато хто запропонував, буде краще довгостроково.


Це перший варіант, який я міг би реально використати, оскільки не зміг знайти налаштування, згадані в інших відповідях в інтерфейсі Android Studio. Я видалив його, а потім створив новий проект, і він спрацював.
Мітч

5

Я також зіткнувся з цією проблемою, коли робив новий проект у затемненні.

  1. Відкрийте каталог встановлення затемнення
  2. Відкрийте файл eclipse.ini
  3. Змінити

    Dosgi.requiredJavaVersion=1.6 

    до

    Dosgi.requiredJavaVersion=1.7

Сподіваюся, це допомагає


Я додаю рядок "Dosgi.requiredJavaVersion = 1.7" до /Applications/eclipse/configuration/config.ini Чудово працює на моєму macOS Сьєрра
Боб Чен

Що ви думаєте, що питання ОП пов'язане з 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 на вашій машині.


Як це зробити?
GuidoG

@GuidoG Вам потрібно дотримуватися інструкцій із встановлення для вашої конкретної операційної системи. Просто Google це, і ви отримаєте детальну інструкцію. Мета полягає в тому, щоб мати можливість запустити java -версію з командного рядка і побачити її як 1.8.
ІгорГанапольський

4

Я перебуваю на Android Studio 2.0 і стикаюся з тією ж проблемою. Рішення, яке надав Руді Курняван, вирішувало це питання. Файл, що стосується цього, може бути розташований за:

"Проект" -> "Android" -> "Сценарії Gradle" -> "build.gradle (Модуль: додаток)"

Панель " Проект " за замовчуванням зліва. Щоб знайти його, ознайомтеся з назвою бічних вкладок, натисніть на неї, а потім скористайтеся верхньою панеллю вниз, щоб перейти до " Android ". Розгорніть дерево на панелі, щоб знайти цільовий файл. Двічі клацніть його, щоб відредагувати.


Я на Intellij IDEA з Maven Build.
Рафаель Рейєс

4

Вибачте за пізню відповідь. Сподіваюся, що це допомагає комусь іншому

Ця проблема пов’язана з вашим SDK, а не з JDK. Ви можете перевірити інформацію про свою версію з

Довідка> Про нас> Показати деталі

У вас вийде щось на кшталт

Версія Xamarin.Android: 6.0.2.1 (Starter Edition) Android SDK: X: \ Android \ android-sdk

Підтримувані версії Android:

4.0.3 (рівень API 15)

4.4 (рівень 19 API)

6.0 (рівень API 23)

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

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

Версія інструментів збирання SDK: 24 rc2

Java SDK: X: \ програмні файли (x86) \ Java \ jdk1.7.0_71

версія java "1.7.0_71"

Java (TM) SE Runtime Environment (збірка 1.7.0_71-b14)

Java HotSpot (TM) клієнта VM (збірка 24.71-b01, змішаний режим, обмін)

Якщо ви використовуєте інструменти попереднього перегляду для побудови, то ви отримаєте подібні помилки в усьому світі.

Що ж тепер робити?

йти до

Інструменти -> менеджер SDK

  1. Виберіть усі елементи в каналах попереднього перегляду, в тому числі Android SDK build toolsз rev 24rc2або 24rc4(останніми)

  2. Натисніть на Delete 'n' packages

Як вимкнути канал попереднього перегляду

  1. У диспетчері SDK виберіть

    Інструменти> параметри

  2. Зніміть прапорець Enable preview tools

І що

Повернутися до коду Очистити все та відновити (У рідкісних випадках вам потрібно вибрати інструменти збірки на сторінці налаштувань проекту)


Це працювало для мене чудово. але перед цим я встановив jdk 8 і змінив каталог, як описано в іншій відповіді тут,
Абдур Рахім

Наскільки Xamarin має відношення до питання ОП?
ІгорГанапольський

"Або встановіть властивість AndroidSdkBuildToolsVersion MSBuild на попередню версію. Наприклад, якщо у вас також встановлена ​​версія 23.0.3, ви можете додати наступний рядок у верхній елемент <PropertyGroup> у файлі проекту .csproj .csproj: <AndroidSdkBuildToolsVersion> 23.0 .3 </AndroidSdkBuildToolsVersion> "
samis

2

Дякую всім за рішення.

Я міг би вирішити свою проблему, використовуючи рішення нижче.

У свій проект я додав банку, створену в Java8. І мій проект посилався на JRE 7. Коли я змінив проект JRE на 8. Моя проблема вирішена.

Етапи: при затемненні клацніть правою кнопкою миші на назві проекту в провіднику проекту> шлях створення> Бібліотеки> натисніть на версію jre> натисніть посилання редагувати> встановити JRE> додати> VAND-код VM> виберіть домашній шлях натискання JRE (шлях повинен бути localePath \ java \ jdk1 .8.0_25 \ jre)> вкажіть ім'я> зберегти> виберіть той самий JRE для проекту> закінчити> ОК Оновити / скласти проект один раз> спробуйте запустити файл Java. це має працювати.


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

2

У моєму випадку за замовчуванням jdk становив 1,7, тоді я змінив його на 1,8, переглянувши точну папку, в якій знайдено оновлений jdk.


це працювало для мене! необхідно встановити версію 1.8 jdk та націлено на неї
hewstone

1

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

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
        }
    }

Якщо це не допомагає, спробуйте перевірити відповідь інших людей за вказаним вище посиланням та повідомте нам, що вам допомогло.


1
Я використовую Maven та IntelliJ.
Рафаель Рейєс

У цьому випадку ви можете змінити джерело та націлити на 1.7 всередині конфігурації на плагіні компілятора Maven
cristianorbs

1

Ваші інструменти побудови Android не встановлені належним чином. Спробуйте встановити іншу версію інструментів збирання та додати цю версію у файл gradle. або ви можете перейти до цього каталогу

C: \ Користувачі \\ AppData \ Local \ Android \ sdk \ build-tools

і подивіться, які інструменти для збирання встановлені. Спробуйте змінити версію інструменту збирання у файлі gradle і складіть додаток, щоб перевірити, чи працює він.

У мене було 22.0.1,23.0.02 та 24.0.0 версій інструментів збирання, і працювала лише стара версія 22.0.1.

Джерело: Я сам спробував це, і це працювало на мене.


1

Ця проблема випливає з того, що версія інструменту збирання та JDK не працюватимуть разом. Я використовував JDK версії 7 з інструментом збирання 24.0.1. Звичайно, зменшення версії інструменту збирання може вирішити проблему, але це не справжнє виправлення, оскільки оновлення інструментів збирання в майбутньому знову порушить її.

Ви повинні переконатися, що версія інструменту для збирання та JDK працюють разом. Я оновив свій інструмент збирання до останнього (24.0.1) та встановив jdk8. Не забудьте встановити свій JAVA_HOME на останнє, а потім спробуйте чисту збірку.


1

Отримав цю ж проблему за межами Android Studio, коли намагався створити для Кордови за допомогою sdk з командного рядка (cordova build android).

Рішення, яке надає Руді, працює і в цьому випадку. Ви просто не поновлюєте версію Інструментів збирання з Android Studio, але це робите, використовуючи призначений для користувача android sdk manager.


0

Я щойно стикався з цією проблемою.

Повернення з «каналу попереднього перегляду» версій інструментів SDK та інструментів побудови до останньої стабільної версії виправлено.


0

Зміна com.android.tools.build:gradle:2.2.0-beta1до com.android.tools.build:gradle:2.1.2фіксованої для мене.

Моя версія Android Studio 2.1.2, можливо, саме тому


0

Найпростіше рішення - вам доведеться оновити JDK до останньої версії. Тому що Кордова підтримує лише останні JDK.

1 . Перш за все, вам потрібно оновити SDK для Android. Тоді,

2. Якщо ви не маєте можливості оновитись через свій термінал, перейдіть до свого програмного центру Linux, знищуйте та шукайте останнє (який ви хочете встановити) та встановіть його.

Потім знову запустіть Cordova build .

Це вирішить проблему.

У моєму випадку це спрацювало.


0

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


0

Переконайтеся , що у вас є остання версія SDK встановлений в будь-якому C:\Program Files\JavaабоC:\Program Files (x86)\Java

Потім перейдіть до VS2015 і виконайте інструменти шляху - параметри - Xamarin - налаштування Android та в розділі JDK location виберіть зміни та перейдіть до пошукової версії, у вас є x64 або x32.


0

Я на кордові, ось що я зробив:

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

Слід працювати без проблем зараз. Ваш хеш програми зміниться, тому якщо ви використовуєте його fe для входу в facbeook, вам потрібно буде оновити його


0

Я мав цю проблему занадто довго (ТАК і т.д. не допомагав), і тільки що вирішив її (використовуючи sdk 25).

- файл local.properties proguard.dir var не застосовувався з мурашкою; Я б вказав 5.3.2, але виклик командного рядка та підписаний збір експорту (eclipse) використовували 4.7, з sdk dir (лише 5+ підтримує Java 8)

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


0

Помилка непідтримуваної основної-другорядної версії може бути через непідтримувану версію JDK. Оновіть JDK, перейдіть до Налаштування модуля та змініть шлях JDK на новий. У більшості випадків вона виправляє помилку.


-1

У мене було встановлено дві версії java jdk. Після того, як я вказав на правильну версію java jdk у меню Файл-> Структура проекту -> Розташування SDK до останньої версії, яку я мав у змінній оточення JAVA_HOME, проблема пішла.


Це не обов'язково вирішує проблему для збірок командного рядка за допомогою Gradle.
ІгорГанапольський
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.