Nieobsługiwana wersja major.minor 52.0 w mojej aplikacji

126

Próbuję skompilować projekt systemu Android i pojawia się ten błąd

[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] ------------------------------------------------------------------------

Czytałem w innym poście, że próba kompilacji z Javą 8 może spowodować ten błąd, ale nie w moim przypadku, mam następującą wersję 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)

System operacyjny: Linux Mint (nie mam zainstalowanej Java 8.) Kompilacja: MAVEN

Czy ktoś może mi w tym pomóc?

Rafael Reyes
źródło
2
Wygląda na to, że korzystasz ze skompilowanych bibliotek java 8 z lokalnym jdk 7.
Taylor
jak mogę to naprawić? @Taylor
Rafael Reyes
4
przełącz się na jdk 8 lub użyj starszej wersji biblioteki zawierającejcom/android/dx/command/Main
Taylor
Nie mogę przełączyć się na jdk 8, jak mogę obniżyć wersję biblioteki zawierającej com / android / dx / command / Main? @Taylor
Rafael Reyes
1
Nie mogę korzystać z czatu z miejsca, w którym jestem.
Taylor

Odpowiedzi:

236

Z tym problemem borykam się również podczas tworzenia nowego projektu ze studia Android.

Udało mi się rozwiązać ten problem, obniżając wersję buildToolsVersion w ustawieniach oceny aplikacji: zmień wiersz {nazwa-modułu} /build.gradle

buildToolsVersion „24.0.0 rc1”

do

buildToolsVersion „23.0.3”


@Edit:
W Android Studio 2.1 przejdź do Plik-> Struktura projektu-> Aplikacja -> Wersja narzędzia kompilacji. Zmień to na 23.0.3

Wykonaj powyższą metodę tylko wtedy, gdy używasz java w wersji 7 iz jakiegoś powodu nie chcesz jeszcze aktualizować do java 8.

Mam nadzieję że to pomoże

Rudy Kurniawan
źródło
@RafaelReyes Nie wiem nic o tworzeniu projektów dla Androida za pomocą mavena. Ale ponieważ Android i tak korzysta z narzędzi do kompilacji, nie możesz znaleźć wersji używanej przez narzędzie do kompilacji w konfiguracji Mavena?
Rudy Kurniawan
1
@RudyKurniawanHi, wydaje mi się, że to <version> 4.1.1.4 </version>
Rafael Reyes
2
Nowsza wersja: buildToolsVersion "23.0.3"
XurajB
1
pomogło dzięki za odpowiedź, ale co zrobić, jeśli potrzebujemy kompilacji 24?
shridutt kothari
2
w tym celu powinieneś użyć java 8 do zbudowania aplikacji
Rudy Kurniawan
43

Gradle Scripts >> build.gradle (aplikacja modułu)

Zmień buildToolsVersion „24.0.0” na buildToolsVersion „23.0.3”

źródło: doświadczenie

Febrianto Nugroho
źródło
10
Dlaczego polecasz tę obniżkę? Co to robi?
J Fabian Meier
Dlaczego preferowany jest 23.0.3 ?
Igor Ganapolsky
31

Początkowo obniżyłem ocenę buildToolsVersionz 24.0.0 rc3do 23.0.3, jak wskazał w odpowiedzi Rudy Kurniawan. Wtedy zauważyłem, że w ustawieniach projektu mam określony jdk 7. Zmieniłem to na jdk 8 i teraz narzędzia do budowania 24.0.0 rc3działają.

wprowadź opis obrazu tutaj

Ważne jest również ustawienie opcji kompilacji na java7:

android {
    ...
    compileOptions {
        sourceCompatibility JavaVersion.VERSION_1_7
        targetCompatibility JavaVersion.VERSION_1_7
    }
}
Denis Kniazhev
źródło
To rozwiązało mój problem z AndroidStudio 2. Otrzymałem kilka dziwnych błędów.
wmac
Z najnowszą wersją buildTools 25.0.1 wymaga Java 8.
IgorGanapolsky,
14

Zainstalowałem Android Studio wraz z Xamarin Visual Studio (zostało już zainstalowane). Po instalacji (z wyłączeniem SDK, ponieważ były już zainstalowane) uruchomiłem Android Studio i pobrałem, zainstalowałem i dodałem brakujące SDK (po podaniu ścieżki do lokalizacji SDK). W rezultacie otrzymałem komunikat o błędzie podczas kompilacji

java.lang.UnsupportedClassVersionError: com / android / dx / command / Main: nieobsługiwana wersja major.minor 52.0

Jako rozwiązanie zainstalowałem jdk-8u101-windows-i586.exebez JRE (ponieważ było już zainstalowane). Wcześniej wypróbowałem wersję x64, ale zniknęła ... Następnie musisz zmienić lokalizację Java Development Kit .

Zmień lokalizację JDK

Odbywa się to w programie Visual Studio, klikając Narzędzia> Opcje> Xamarin> Ustawienia systemu Android. Tutaj możesz przejść do właściwej lokalizacji. W moim przypadku tak było C:\Program Files (x86)\Java\jdk1.8.0_101.

Na koniec wyczyść swój projekt i utwórz nową kompilację :-)

testowanie
źródło
„Lub ustaw właściwość AndroidSdkBuildToolsVersion MSBuild na wcześniejszą wersję. Na przykład, jeśli masz również zainstalowaną wersję 23.0.3, możesz dodać następujący wiersz w górnym elemencie <PropertyGroup> w pliku .csproj projektu systemu Android: <AndroidSdkBuildToolsVersion> 23.0 .3 </ AndroidSdkBuildToolsVersion>” Ref: releases.xamarin.com/...
Samis
8

Określony problem:

Wyjątek w wątku „main” java.lang.UnsupportedClassVersionError: com / android / dx / command / Main: nieobsługiwana wersja major.minor 52.

jest spowodowany, gdy jest zadeklarowany wewnątrz pliku build.gradle, buildToolsVersion 24a nie mamy zainstalowanej Java 8, która jest wymagana dla tej wersji . Aby rozwiązać ten problem, musimy zmienić buildToolsVersionz 24 na maksymalnie 23:

wprowadź opis obrazu tutaj

W przyszłości musi być wymagana Java 8 Android Studio, więc musimy zacząć używać Javy 8.

Jorgesys
źródło
6

Miałem ten sam problem z moją kompilacją IntelliJ Maven. Moim „rozwiązaniem” było przejście do narzędzi do kompilacji i usunięcie folderu narzędzi do kompilacji 24.0.0. Znalazłem to w {android-sdk-location}/build-tools/katalogu. Nie jest to rozwiązanie długoterminowe, ale powinno przynajmniej spowodować ponowne zbudowanie projektu. Aktualizacja do Java 8, jak wielu sugerowało, będzie lepsza w dłuższej perspektywie.

sotrh
źródło
Jest to pierwsza opcja, z której mogłem skorzystać, ponieważ nie mogłem znaleźć ustawień wymienionych w innych odpowiedziach w interfejsie użytkownika Android Studio. Usunąłem go, a następnie utworzyłem nowy projekt i zadziałał.
Mitch
5

Z tym problemem spotkałem się również podczas tworzenia nowego projektu w zaćmieniu.

  1. Otwórz katalog instalacyjny eclipse
  2. Otwórz plik eclipse.ini
  3. Modyfikować

    Dosgi.requiredJavaVersion=1.6 
    

    do

    Dosgi.requiredJavaVersion=1.7
    

Mam nadzieję że to pomoże

user6661437
źródło
Dołączam wiersz „Dosgi.requiredJavaVersion = 1.7” do /Applications/eclipse/configuration/config.ini Działa doskonale na moim macOS Sierra
Bob Cheng
Dlaczego uważasz, że pytanie OP jest związane z Eclipse?
Igor Ganapolsky
5

Nikt tu nie mówi, to fakt, że przy Build Tools 24.0.0 wymagana jest Java 8, a większość ludzi ma wersję 1.6 lub 1.7.

Więc tak, ustawienie narzędzia kompilacji na 23.xx `` rozwiązałoby '' problem, ale główną przyczyną jest wersja Java w twoim systemie.

W dłuższej perspektywie możesz chcieć zaktualizować swoje środowisko programistyczne, aby używać JDK8, aby korzystać z nowych ulepszeń języka i kompilatora jack.

Jay Sidri
źródło
5

52 to kod JDK 8. Możesz to zobaczyć tutaj: http://javarevisited.blogspot.com/2015/05/fixing-unsupported-majorminor-version.html . Tak więc Gradle oczekuje, że będziesz mieć JDK 8 jako domyślną wersję Java na swoim komputerze. Najnowsze wersje Gradle dla Androida nie będą działać z Javą 7.

Rozwiązanie jest proste: ustaw Java 8 jako domyślną wersję jdk na twoim komputerze.

IgorGanapolsky
źródło
Jak to się robi?
GuidoG
@GuidoG Musisz postępować zgodnie z instrukcjami instalacji dla Twojego konkretnego systemu operacyjnego. Po prostu wygoogluj, a otrzymasz szczegółowe instrukcje. Celem jest umożliwienie uruchomienia wersji java z wiersza poleceń i zobaczenie jej jako 1.8.
IgorGanapolsky
4

Jestem na Androidzie Studio 2.0 i mam ten sam problem. Rozwiązanie dostarczone przez Rudy'ego Kurniawana rozwiązało ten problem. Plik, którego dotyczy problem, można zlokalizować poprzez:

„Projekt” -> „Android” -> „Skrypty Gradle” -> „build.gradle (Moduł: aplikacja)”

Okienko „ Projekt ” jest domyślnie po lewej stronie. Aby go znaleźć, sprawdź nazwy zakładek bocznych, kliknij je, a następnie użyj górnego rozwijanego pola, aby przejść do „ Android ”. Rozwiń drzewo w okienku, aby znaleźć plik docelowy. Kliknij dwukrotnie, aby edytować.

grubiański
źródło
Jestem na Intellij IDEA z Maven Build.
Rafael Reyes
4

Przepraszamy za spóźnioną odpowiedź. Mam nadzieję, że pomoże to komuś innemu

Ten problem jest związany z pakietem SDK, a nie z pakietem JDK. Możesz sprawdzić informacje o swojej wersji pod adresem

Pomoc> Informacje> Pokaż szczegóły

Otrzymasz coś takiego

Xamarin.Android Wersja: 6.0.2.1 (Starter Edition) Android SDK: X: \ Android \ android-sdk

Obsługiwane wersje Androida:

4.0.3 (poziom API 15)

4.4 (poziom API 19)

6.0 (poziom API 23)

Wersja narzędzi SDK: 24.4.1

Wersja narzędzi platformy SDK: 23.0.1

Wersja narzędzi do budowania SDK: 24 rc2

Java SDK: X: \ Program Files (x86) \ Java \ jdk1.7.0_71

wersja java „1.7.0_71”

Środowisko wykonawcze Java (TM) SE (kompilacja 1.7.0_71-b14)

Maszyna wirtualna klienta Java HotSpot (TM) (wersja 24.71-b01, tryb mieszany, udostępnianie)

Jeśli używasz narzędzi podglądu do budowania, będziesz otrzymywać podobne błędy wszędzie.

Co zrobić teraz?

iść do

Narzędzia -> Menedżer SDK

  1. Wybierz wszystkie elementy w kanałach podglądu, w tym Android SDK build toolsz rev 24rc2lub 24rc4(najnowszą)

  2. Kliknij Delete 'n' packages

Jak wyłączyć kanał podglądu

  1. W menedżerze SDK wybierz

    Narzędzia> opcje

  2. Odznacz Enable preview tools

I co

Powrót do kodu Wyczyść wszystko i odbuduj (w rzadkich przypadkach musisz wybrać narzędzia kompilacji ze strony ustawień projektu)

Habel Philip
źródło
To działało dobrze dla mnie. ale wcześniej zainstalowałem jdk 8 i zmieniłem katalog, jak opisano w innej odpowiedzi tutaj,
Abdur Rahim
W jaki sposób Xamarin odnosi się do pytania OP?
Igor Ganapolsky
„Lub ustaw właściwość AndroidSdkBuildToolsVersion MSBuild na wcześniejszą wersję. Na przykład, jeśli masz również zainstalowaną wersję 23.0.3, możesz dodać następujący wiersz w górnym elemencie <PropertyGroup> w pliku .csproj projektu systemu Android: <AndroidSdkBuildToolsVersion> 23.0 .3 </AndroidSdkBuildToolsVersion> "
samis
2

Dziękuję wszystkim za rozwiązanie.

Mógłbym rozwiązać ten sam problem, używając poniższego rozwiązania.

W moim projekcie dodałem jar, który powstał w Javie8. A mój projekt odnosił się do JRE 7. Kiedy zmieniłem JRE projektu na 8. Mój problem został rozwiązany.

Kroki: W eclipse kliknij prawym przyciskiem myszy nazwę projektu w eksploratorze projektów> ścieżka kompilacji> Biblioteki> kliknij wersję jre> kliknij edytuj> zainstalowane JRE> dodaj> standerd VM> wybierz ścieżkę kliknięcia strony głównej JRE (ścieżka powinna być localePath \ java \ jdk1 .8.0_25 \ jre)> podaj nazwę> zapisz> wybierz ten sam JRE dla projektu> zakończ> ok Odśwież / zbuduj projekt raz> spróbuj uruchomić plik java. powinno działać.

haithem
źródło
2

Otrzymujesz ten komunikat o błędzie na serwerze kompilacji Travis?

Poprawiłem mój Travis budować z buildToolsVersion „24.0.2” za pomocą tego

# 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
źródło
To jest poprawne. kiedy próbowałem naprawić moją wersję Travis, znalazłem to pytanie, które mi nie pomogło. po tym, jak dowiedziałem się, jak to naprawić, dodałem to do innych z tym samym problemem
k3b
2

W moim przypadku domyślny jdk to 1.7, a następnie zmieniłem go na 1.8, przechodząc do dokładnego folderu, w którym znajduje się zaktualizowany jdk.

Hedego
źródło
to zadziałało dla mnie! trzeba mieć zainstalowaną i docelową wersję 1.8 jdk
hewstone
1

Miałem ten sam problem i próbowałem zmienić wersję, czasami jest dla wersji Android Studio w Project> Gradle Scripts> build.gradle (Moduł: aplikacja) można zmienić wersję. Na przykład:

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

    defaultConfig {
        applicationId "com.example.android.myapplication"
        minSdkVersion **19**
        targetSdkVersion **23**
        versionCode **1**
        versionName **"1.0"**
    }
Gladys Sanchez
źródło
1

Z tego pytania.

Możesz spróbować zmienić poziom kompilatora z powrotem na 1.7 w używanym IDE.

  • Jeśli korzystasz z Eclipse, przejdź do Windows ---> Preferencje, a następnie wybierz Java i rozwiń ją, a następnie wybierz Kompilator i zmień poziom zgodności na 1.7.
  • Jeśli korzystasz z Android Studio, możesz dodać to do swojego 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
        }
    }
    

Jeśli to nie pomoże, spróbuj sprawdzić odpowiedzi innych osób w powyższym linku i daj nam znać, co Ci pomogło.

cristianorbs
źródło
1
Używam Maven i IntelliJ.
Rafael Reyes
W tym przypadku można zmienić źródło i cel do 1,7 konfiguracji wewnątrz na Maven kompilator wtyczki
cristianorbs
1

Twoje narzędzia do kompilacji systemu Android nie są poprawnie zainstalowane. Spróbuj zainstalować inną wersję narzędzi do kompilacji i podaj tę wersję w pliku gradle. lub możesz przejść do tego katalogu

C: \ Users \\ AppData \ Local \ Android \ sdk \ build-tools

i zobacz, które narzędzia do kompilacji są zainstalowane. Spróbuj zmienić wersję narzędzia do budowania w pliku gradle i skompiluj aplikację, aby sprawdzić, czy działa.

Miałem wersje narzędzi do kompilacji 22.0.1, 23.0.02 i 24.0.0 i działała tylko stara wersja 22.0.1.

źródło: sam spróbowałem i zadziałało.

Pokos
źródło
1

Ten problem wynika z faktu, że wersja narzędzia kompilacji i JDK nie będą ze sobą współpracować. Używałem JDK w wersji 7 z narzędziem do budowania 24.0.1. Oczywiście obniżenie wersji narzędzia do kompilacji może rozwiązać problem, ale nie jest to prawdziwa poprawka, ponieważ aktualizacja narzędzi do kompilacji w przyszłości ponownie go zepsuje.

Powinieneś upewnić się, że wersja narzędzia do budowania i JDK współpracują ze sobą. Zaktualizowałem moje narzędzie do kompilacji do najnowszej (24.0.1) i zainstalowałem jdk8. Upewnij się, że ustawiłeś JAVA_HOME na najnowszą, a następnie wypróbuj czystą kompilację.

GodOnScooter
źródło
1

Ten sam problem występuje poza Android Studio, podczas próby kompilacji dla Cordova przy użyciu sdk z wiersza poleceń (cordova build android).

Rozwiązanie dostarczone przez Rudy'ego działa również w tym przypadku. Po prostu nie obniżasz wersji Build Tools z Android Studio, ale robisz to za pomocą interfejsu użytkownika Android SDK Manager.

Andrea Gherardi
źródło
0

Właśnie napotkałem ten problem.

Przywrócenie z wersji „kanału podglądu” narzędzi SDK i narzędzi do kompilacji do najnowszej stabilnej wersji rozwiązało problem.

Mike Playle
źródło
0

Zmiana, com.android.tools.build:gradle:2.2.0-beta1żeby com.android.tools.build:gradle:2.1.2to naprawić.

Moja wersja Android Studio to 2.1.2, być może dlatego

ericn
źródło
0

Najprostszym rozwiązaniem jest aktualizacja JDK do najnowszej wersji. Ponieważ Cordova obsługuje tylko najnowszy JDK.

1 . Przede wszystkim musisz zaktualizować swój Android SDK. Następnie,

2. Jeśli nie możesz zaktualizować za pomocą terminala, przejdź do centrum oprogramowania Linux destro i wyszukaj najnowsze (które chcesz zainstalować) i zainstaluj je.

Następnie ponownie uruchom kompilację Cordova .

To rozwiąże problem.

W moim przypadku zadziałało.

PyDevSRS
źródło
0

Musisz przejść do katalogu instalacyjnego zestawu SDK i upewnić się, że podkatalog / build-tools jest zgodny z katalogiem buildToolsVersionw pliku build.gradle aplikacji: wprowadź opis obrazu tutaj

IgorGanapolsky
źródło
0

Sprawdź, czy masz zainstalowaną najnowszą wersję zestawu SDK w C:\Program Files\JavalubC:\Program Files (x86)\Java

Następnie przejdź do VS2015 i postępuj zgodnie z narzędziami ścieżki - opcje - Xamarin - ustawienia systemu Android iw sekcji Lokalizacja JDK wybierz zmianę i przejdź do wersji, którą masz x64 lub x32.

genomma
źródło
0

Jestem na cordova, oto co zrobiłem:

- zmień nazwę swojego projektu na Androida, aby było miejsce na nowy
- zaktualizuj JAVA Development Kit do wersji 1.8 (najnowszej w czasie pisania tego)
- uruchomcordova platform add android

Powinien teraz działać bez problemów. Skrót Twojej aplikacji ulegnie zmianie, więc jeśli używasz go np. Do logowania się za pomocą facbeook, będziesz musiał go zaktualizować

mate.gwozdz
źródło
0

Miałem ten problem zbyt długo (SO itp. Nie pomogło) i dopiero go rozwiązałem (używając SDK 25).

-Plik local.properties proguard.dir var nie działał z ant; Podałem 5.3.2, ale wywołanie wiersza poleceń i podpisana kompilacja eksportu (zaćmienie) używały 4.7, z katalogu sdk (tylko 5+ obsługuje java 8)

Moim rozwiązaniem było zastąpienie słoików proguard (katalog android-sdk / tools / proguard / libs) w sdk aktualną (5+) wersją programu proguard.

rndStr
źródło
0

Błąd unsupported-major-minor-version może być spowodowany nieobsługiwaną wersją JDK. Zaktualizuj JDK, przejdź do ustawień modułu i zmień ścieżkę JDK na nową. W większości przypadków naprawia błąd.

Rachit Murarka
źródło
-1

Miałem zainstalowane dwie wersje java jdk. Gdy wskazałem właściwą wersję java jdk w Plik-> Struktura projektu -> Lokalizacja SDK do najnowszej wersji, którą miałem w zmiennej środowiskowej JAVA_HOME, problem zniknął.

Thambu Zk
źródło
Niekoniecznie rozwiązuje to problem z kompilacjami z wiersza poleceń w Gradle.
Igor Ganapolsky