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?


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


@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


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

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ę :-)


„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.


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.


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


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.


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.


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ć.


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)


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ć.


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

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.


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

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.


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.


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ę.


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.


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.


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


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.


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


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.


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ć


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.


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.


-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ął.


Niekoniecznie rozwiązuje to problem z kompilacjami z wiersza poleceń w Gradle.
Igor Ganapolsky
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.