Nicht unterstützte major.minor Version 52.0 in meiner App

127

Ich versuche mein Android-Projekt zu kompilieren und erhalte diesen Fehler

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

Ich habe in einem anderen Beitrag gelesen, dass der Versuch, mit Java 8 zu kompilieren, diesen Fehler verursachen könnte, aber nicht mein Fall. Ich habe die folgende Java-Version:

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)

Betriebssystem: Linux Mint (Java 8 ist nicht installiert.) Build: MAVEN

Kann mir jemand dabei helfen?

Rafael Reyes
quelle
1
Sieht so aus, als würden Sie Java 8-kompilierte Bibliotheken mit lokalem JDK 7 verwenden.
Taylor
Wie kann ich das beheben? @ Taylor
Rafael Reyes
3
Wechseln Sie zu JDK 8 oder verwenden Sie eine ältere Version der Bibliothek mitcom/android/dx/command/Main
Taylor
Ich darf nicht zu JDK 8 wechseln. Wie kann die Version der Bibliothek mit com / android / dx / command / Main heruntergestuft werden? @ Taylor
Rafael Reyes
Was verwenden Sie für das Build- und Abhängigkeitsmanagement? Maven?
Taylor

Antworten:

236

Ich bin auch mit diesem Problem konfrontiert, wenn ich ein neues Projekt aus Android Studio mache.

Ich konnte dies beheben, indem ich buildToolsVersion in der App-Gradle-Einstellung heruntergestuft habe: change {module-name} /build.gradle line

buildToolsVersion "24.0.0 rc1"

zu

buildToolsVersion "23.0.3"


@Edit: Gehen Sie
in Android Studio 2.1 zu Datei-> Projektstruktur-> App -> Build Tool-Version. Ändern Sie es in 23.0.3

Führen Sie die oben beschriebene Methode nur aus, wenn Sie Java Version 7 verwenden und aus irgendeinem Grund noch kein Upgrade auf Java 8 durchführen möchten.

Hoffe das hilft

Rudy Kurniawan
quelle
@ RafaelReyes Ich weiß nichts über das Erstellen eines Android-Projekts mit Maven. Aber da Android ohnehin Build-Tools verwendet, können Sie nicht finden, welche Version Ihre Build-Tool-Version in der Maven-Konfiguration verwendet hat?
Rudy Kurniawan
1
@ RudyKurniawanHi, ich denke ist <Version> 4.1.1.4 </ Version>
Rafael Reyes
2
Die neuere Version: buildToolsVersion "23.0.3"
XurajB
1
es half danke für die Antwort, aber was sollen wir tun, wenn wir Build 24 brauchen?
Shridutt Kothari
2
Dafür sollten Sie Java 8 verwenden, um Ihre App zu erstellen
Rudy Kurniawan
43

Gradle-Skripte >> build.gradle (Modul-App)

Ändern Sie buildToolsVersion "24.0.0" in buildToolsVersion "23.0.3".

Quelle: Erfahrung

Febrianto Nugroho
quelle
10
Warum empfehlen Sie dieses Downgrade? Was tut es?
J Fabian Meier
Warum ist 23.0.3 vorzuziehen?
Igor Ganapolsky
31

Anfangs hatte ich ein Downgrade buildToolsVersionvon 24.0.0 rc3auf durchgeführt 23.0.3, wie in Rudy Kurniawans Antwort angegeben. Dann habe ich festgestellt, dass ich in meinen Projekteinstellungen jdk 7 angegeben habe. Ich habe es in jdk 8 geändert und jetzt 24.0.0 rc3funktionieren Build-Tools .

Geben Sie hier die Bildbeschreibung ein

Es ist auch wichtig, dass die Kompilierungsoptionen auf Folgendes eingestellt sind java7:

android {
    ...
    compileOptions {
        sourceCompatibility JavaVersion.VERSION_1_7
        targetCompatibility JavaVersion.VERSION_1_7
    }
}
Denis Kniazhev
quelle
Dies löste mein Problem mit AndroidStudio 2. Ich erhielt eine Reihe seltsamer Fehler.
Wmac
Mit der neuesten buildToolsVersion 25.0.1 wird Java 8 benötigt.
IgorGanapolsky
14

Ich habe Android Studio neben Xamarin Visual Studio installiert (wurde bereits installiert). Nach der Installation (SDK ausgeschlossen, da sie bereits installiert waren) habe ich Android Studio gestartet und fehlende SDKs heruntergeladen, installiert und hinzugefügt (nachdem der Pfad zum SDK-Speicherort angegeben wurde). Als Ergebnis habe ich die Fehlermeldung beim Erstellen erhalten

java.lang.UnsupportedClassVersionError: com / android / dx / command / Main: Nicht unterstützte major.minor-Version 52.0

Als Lösung habe ich jdk-8u101-windows-i586.exeohne JRE installiert (weil es bereits installiert war). Bevor ich die x64-Version ausprobiert habe, ist sie jedoch verschwunden ... Dann müssen Sie den Speicherort des Java Development Kit ändern .

Ändern Sie den JDK-Speicherort

Klicken Sie dazu in Visual Studio auf Extras> Optionen> Xamarin> Android-Einstellungen. Hier können Sie zum richtigen Ort navigieren. In meinem Fall war es C:\Program Files (x86)\Java\jdk1.8.0_101.

Zum Schluss bereinige dein Projekt und erstelle einen neuen Build :-)

testen
quelle
"Oder setzen Sie die MSBuild-Eigenschaft AndroidSdkBuildToolsVersion auf eine frühere Version. Wenn Sie beispielsweise auch Version 23.0.3 installiert haben, können Sie die folgende Zeile in das oberste Element <PropertyGroup> in der .csproj-Datei des Android-Projekts einfügen: <AndroidSdkBuildToolsVersion> 23.0 0,3 </ AndroidSdkBuildToolsVersion>“ ref: releases.xamarin.com/...
samis
8

Das angegebene Problem:

Ausnahme im Thread "main" java.lang.UnsupportedClassVersionError: com / android / dx / command / Main: Nicht unterstützte major.minor-Version 52.

wird verursacht, wenn innerhalb von deklariert wird build.gradle, buildToolsVersion 24und wir haben kein Java 8 installiert, das für diese Version erforderlich ist . Um dieses Problem zu lösen, müssen wir buildToolsVersionvon 24 auf maximal 23 wechseln :

Geben Sie hier die Bildbeschreibung ein

Java 8 muss in Zukunft für erforderlich sein Android Studio, daher müssen wir Java 8 verwenden.

Jorgesys
quelle
6

Ich hatte das gleiche Problem mit meinem IntelliJ Maven Build. Meine "Lösung" bestand darin, in die Build-Tools zu gehen und den Ordner Build-Tools 24.0.0 zu entfernen. Ich habe es im {android-sdk-location}/build-tools/Verzeichnis gefunden. Dies ist keine langfristige Lösung, aber dies sollte zumindest dazu führen, dass Ihr Projekt wieder aufgebaut wird. Ein Upgrade auf Java 8, wie viele vorgeschlagen haben, wird langfristig besser sein.

sotrh
quelle
Dies ist die erste Option, die ich tatsächlich verwenden könnte, da ich die in anderen Antworten genannten Einstellungen in der Benutzeroberfläche von Android Studio nicht finden konnte. Ich habe es gelöscht und dann ein neues Projekt erstellt und es hat funktioniert.
Mitch
5

Ich war auch mit diesem Problem konfrontiert, als ich ein neues Projekt in Eclipse erstellte.

  1. Öffnen Sie Ihr Eclipse-Installationsverzeichnis
  2. Öffnen Sie die Datei eclipse.ini
  3. Ändern

    Dosgi.requiredJavaVersion=1.6 

    zu

    Dosgi.requiredJavaVersion=1.7

Hoffe das hilft

user6661437
quelle
Ich füge die Zeile "Dosgi.requiredJavaVersion = 1.7" an /Applications/eclipse/configuration/config.ini an. Funktioniert perfekt auf meinem MacOS Sierra
Bob Cheng
Was lässt Sie denken, dass die Frage von OP mit Eclipse zusammenhängt?
Igor Ganapolsky
5

Was hier niemand sagt, ist, dass mit Build Tools 24.0.0 Java 8 erforderlich ist und die meisten Leute entweder 1.6 oder 1.7 haben.

Wenn Sie das Build-Tool auf 23.xx setzen, wird das Problem "gelöst", aber die Hauptursache ist die Java-Version auf Ihrem System.

Langfristig möchten Sie möglicherweise Ihre Entwicklungsumgebung auf JDK8 aktualisieren, um die neuen Sprachverbesserungen und den Jack-Compiler nutzen zu können.

Jay Sidri
quelle
5

52 ist der Code für JDK 8. Sie können dies hier sehen: http://javarevisited.blogspot.com/2015/05/fixing-unsupported-majorminor-version.html . Daher erwartet Gradle, dass Sie JDK 8 als Standard-Java-Version auf Ihrem Computer haben. Neueste Versionen von Gradle für Android funktionieren nicht mit Java 7.

Die Lösung ist einfach: Machen Sie Java 8 zur Standard-JDK-Version auf Ihrem Computer.

IgorGanapolsky
quelle
Wie macht man das?
GuidoG
@GuidoG Sie müssen die Installationsanweisungen für Ihr spezifisches Betriebssystem befolgen. Google es einfach und du erhältst die detaillierten Anweisungen. Das Ziel ist es, Java-Version über die Befehlszeile ausführen zu können und sie als zu sehen 1.8.
Igor Ganapolsky
4

Ich bin auf Android Studio 2.0 und habe das gleiche Problem. Die von Rudy Kurniawan bereitgestellte Lösung hat dieses Problem gelöst. Die betroffene Datei kann gefunden werden durch:

"Projekt" -> "Android" -> "Gradle Scripts" -> "build.gradle (Modul: App)"

Der Bereich " Projekt " ist standardmäßig links. Um es zu finden, überprüfen Sie den Namen der seitlichen Registerkarten, klicken Sie darauf und verwenden Sie das obere Pulldown-Feld, um zu " Android " zu gelangen. Erweitern Sie den Baum im Bereich, um die Zieldatei zu finden. Doppelklicken Sie zum Bearbeiten darauf.

Coarist
quelle
Ich bin auf Intellij IDEA mit Maven Build.
Rafael Reyes
4

Entschuldigung für die späte Antwort. Ich hoffe, es hilft jemand anderem

Dieses Problem hängt mit Ihrem SDK zusammen, nicht mit Ihrem JDK. Sie können Ihre Versionsinformationen von überprüfen

Hilfe> Info> Details anzeigen

Sie werden so etwas bekommen

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

Unterstützte Android-Versionen:

4.0.3 (API Level 15)

4.4 (API Level 19)

6.0 (API-Level 23)

SDK Tools Version: 24.4.1

SDK Platform Tools Version: 23.0.1

SDK Build Tools Version: 24 rc2

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

Java-Version "1.7.0_71"

Java (TM) SE-Laufzeitumgebung (Build 1.7.0_71-b14)

Java HotSpot (TM) -Client-VM (Build 24.71-b01, gemischter Modus, Freigabe)

Wenn Sie Vorschau-Tools zum Erstellen verwenden, werden überall ähnliche Fehler angezeigt.

Was nun?

gehe zu

Extras -> SDK-Manager

  1. Wählen Sie alle Elemente in Vorschau-Kanälen aus, einschließlich Android SDK build toolsmit rev 24rc2oder 24rc4(spätestens)

  2. Klicke auf Delete 'n' packages

So deaktivieren Sie den Vorschau-Kanal

  1. Wählen Sie im SDK-Manager

    Extras> Optionen

  2. Deaktivieren Sie Enable preview tools

Und was

Zurück zu Ihrem Code Alle bereinigen und neu erstellen (In seltenen Fällen müssen Sie Build-Tools auf der Seite mit den Projekteinstellungen auswählen.)

Habel Philip
quelle
Das hat bei mir gut funktioniert. aber vorher habe ich jdk 8 installiert und das Verzeichnis geändert, wie in einer anderen Antwort hier beschrieben
Abdur Rahim
Wie ist Xamarin für die Frage von OP relevant?
IgorGanapolsky
"Oder setzen Sie die MSBuild-Eigenschaft AndroidSdkBuildToolsVersion auf eine frühere Version. Wenn Sie beispielsweise auch Version 23.0.3 installiert haben, können Sie die folgende Zeile in das oberste <PropertyGroup> -Element in der .csproj-Datei des Android-Projekts einfügen: <AndroidSdkBuildToolsVersion> 23.0 .3 </ AndroidSdkBuildToolsVersion> "
samis
2

Vielen Dank an alle für die Lösung.

Ich könnte das gleiche Problem mit der folgenden Lösung lösen.

In meinem Projekt habe ich jar hinzugefügt, die in Java8 erstellt wurden. Und mein Projekt bezog sich auf JRE 7. Als ich das Projekt JRE auf 8 änderte, war mein Problem gelöst.

Schritte: Klicken Sie in Eclipse im Projektexplorer mit der rechten Maustaste auf den Projektnamen> Erstellungspfad> Bibliotheken> Klicken Sie auf JRE-Version> Klicken Sie auf Bearbeiten> Installierte JRE> Hinzufügen> Standard-VM> Wählen Sie JRE-Home-Klickpfad (Pfad sollte localePath \ java \ jdk1 sein .8.0_25 \ jre)> Name angeben> Speichern> Gleiche JRE für Projekt auswählen> Fertig stellen> OK Projekt einmal aktualisieren / erstellen> Versuchen Sie, Ihre Java-Datei auszuführen. es sollte funktionieren.

haithem
quelle
2

Diese Fehlermeldung auf dem Travis Build Server erhalten?

Ich reparierte mein travis Build mit buildToolsVersion „24.0.2“ mit diesem

# 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
quelle
das ist richtig. Als ich versuchte, meinen Travis Build zu reparieren, fand ich diese Frage, die mir nicht half. Nachdem ich herausgefunden hatte, wie man das Problem behebt, fügte ich dies für andere mit dem gleichen Problem hinzu
k3b
2

In meinem Fall war das Standard-JDK 1.7, dann habe ich es in 1.8 geändert, indem ich zu dem genauen Ordner navigiert habe, in dem sich das aktualisierte JDK befindet.

Hedego
quelle
das hat bei mir funktioniert! müssen Version 1.8 JDK installiert und gezielt haben
Hewstone
1

Ich hatte das gleiche Problem und habe versucht, die Version zu ändern. Manchmal können Sie für die Version von Android Studio unter Projekt> Gradle-Skripte> build.gradle (Modul: App) die Version ändern. Beispielsweise:

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

    defaultConfig {
        applicationId "com.example.android.myapplication"
        minSdkVersion **19**
        targetSdkVersion **23**
        versionCode **1**
        versionName **"1.0"**
    }
Gladys Sanchez
quelle
1

Aus dieser Frage.

Sie können versuchen, Ihre Compiler-Ebene in der von Ihnen verwendeten IDE wieder auf 1,7 zu ​​ändern.

  • Wenn Sie mit Eclipse arbeiten, gehen Sie zu Windows ---> Einstellungen, wählen Sie Java aus und erweitern Sie es. Wählen Sie dann Compiler aus und ändern Sie die Konformitätsstufe auf 1.7.
  • Wenn Sie mit Android Studio arbeiten, können Sie dies zu Ihrem build.gradle hinzufügen

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

Wenn dies nicht hilft, überprüfen Sie die Antwort anderer unter dem oben genannten Link und teilen Sie uns mit, was Ihnen geholfen hat.

Cristianorbs
quelle
1
Ich benutze Maven und IntelliJ.
Rafael Reyes
In diesem Fall könnten Sie Quell- und Ziel auf 1,7 innerhalb Konfiguration ändern auf Maven Compiler Plugin
cristianorbs
1

Ihre Android-Build-Tools sind nicht ordnungsgemäß installiert. Versuchen Sie, eine andere Version der Build-Tools zu installieren, und geben Sie diese Version in der Gradle-Datei an. oder Sie können in dieses Verzeichnis gehen

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

und sehen Sie, welche Build-Tools installiert sind. Versuchen Sie, die Version des Build-Tools in der Gradle-Datei zu ändern, und kompilieren Sie die App, um festzustellen, ob sie funktioniert.

Ich hatte 22.0.1.23.0.02 und 24.0.0 Versionen von Build-Tools und nur die alte 22.0.1-Version funktionierte.

Quelle: Ich habe es selbst versucht und es hat bei mir funktioniert.

Swathin
quelle
1

Dieses Problem ist darauf zurückzuführen, dass Ihre Build-Tool-Version und JDK nicht zusammenarbeiten. Ich habe JDK Version 7 mit dem Build-Tool 24.0.1 verwendet. Natürlich kann das Problem durch Verringern der Build-Tool-Version behoben werden, dies ist jedoch keine echte Lösung, da ein zukünftiges Upgrade Ihrer Build-Tools das Problem erneut beheben wird.

Sie sollten sicherstellen, dass Build-Tool-Version und JDK zusammenarbeiten. Ich habe mein Build-Tool auf den neuesten Stand (24.0.1) aktualisiert und jdk8 installiert. Stellen Sie sicher, dass JAVA_HOME auf den neuesten Stand gebracht ist, und versuchen Sie dann, einen sauberen Build zu erstellen.

GodOnScooter
quelle
1

Habe das gleiche Problem außerhalb von Android Studio, als ich versuchte, mit dem SDK über die Befehlszeile (Cordova Build Android) für Cordova zu erstellen.

Die von Rudy bereitgestellte Lösung funktioniert auch in diesem Fall. Sie führen kein Downgrade der Version von Build Tools von Android Studio durch, sondern verwenden die Android SDK Manager-Benutzeroberfläche.

Andrea Gherardi
quelle
0

Ich bin gerade auf dieses Problem gestoßen.

Das Zurücksetzen von den "Preview Channel" -Versionen der SDK-Tools und Build-Tools auf die neueste stabile Version hat das Problem behoben.

Mike Playle
quelle
0

Wechseln com.android.tools.build:gradle:2.2.0-beta1zucom.android.tools.build:gradle:2.1.2 es für mich zu beheben.

Meine Android Studio-Version ist 2.1.2, vielleicht deshalb

ericn
quelle
0

Die einfachste Lösung besteht darin, dass Sie Ihr JDK auf die neueste Version aktualisieren müssen. Weil Cordova nur das neueste JDK unterstützt.

1 . Zunächst müssen Sie Ihr Android SDK aktualisieren. Dann,

2. Wenn Sie nicht über Ihr Terminal aktualisieren können, gehen Sie zu Ihrem Software-Center von Linux und suchen Sie nach dem neuesten (welches Sie installieren möchten) und installieren Sie dieses.

Führen Sie dann erneut Cordova Build aus .

Es wird das Problem lösen.

In meinem Fall hat es funktioniert.

PyDevSRS
quelle
0

Sie müssen in Ihr SDK-Installationsverzeichnis wechseln und sicherstellen, dass das Unterverzeichnis / build-tools mit dem buildToolsVersionin der build.gradle-Datei Ihrer App übereinstimmt: Geben Sie hier die Bildbeschreibung ein

IgorGanapolsky
quelle
0

Überprüfen Sie, ob Sie die neueste Version des SDK in C:\Program Files\Javaoder installiert habenC:\Program Files (x86)\Java

Gehen Sie dann zu VS2015 und folgen Sie den Pfadwerkzeugen - Optionen - Xamarin - Android-Einstellungen. Wählen Sie im Abschnitt JDK-Speicherort die Option Ändern aus und suchen Sie nach der Version, für die Sie entweder x64 oder x32 haben.

genomma
quelle
0

Ich bin auf Cordova, hier ist was ich getan habe:

- Benennen Sie Ihr Android - Projekt, so dass es Platz für neue
- Update Java Development Kit 1.8 (spätestens eine in der Zeit der Abfassung dieses)
- runcordova platform add android

Sollte jetzt ohne Probleme funktionieren. Ihr App-Hash ändert sich. Wenn Sie ihn beispielsweise für die Facbeook-Anmeldung verwenden, müssen Sie ihn aktualisieren

mate.gwozdz
quelle
0

Ich hatte dieses Problem zu lange (SO usw. hatte nicht geholfen) und es gerade erst gelöst (mit SDK 25).

-Die Datei local.properties proguard.dir var wurde nicht mit ant angewendet. Ich hatte 5.3.2 angegeben, aber ein Befehlszeilenaufruf und ein signierter Export-Build (Eclipse) verwendeten 4.7 aus dem SDK-Verzeichnis (nur 5+ unterstützen Java 8).

Meine Lösung bestand darin, die Proguard-Jars (Verzeichnis android-sdk / tools / proguard / libs) im SDK durch eine aktuelle (5+) Version von Proguard zu ersetzen.

rndStr
quelle
0

Der Fehler "Nicht unterstützte Major-Minor-Version" kann auf eine nicht unterstützte JDK-Version zurückzuführen sein. Aktualisieren Sie das JDK, gehen Sie zu den Moduleinstellungen und ändern Sie den JDK-Pfad in den neuen. In den meisten Fällen wird der Fehler behoben.

Rachit Murarka
quelle
-1

Ich hatte zwei Versionen von Java JDK installiert. Nachdem ich unter Datei-> Projektstruktur -> SDK-Speicherort auf die richtige Version von Java JDK auf die neueste Version in der Umgebungsvariablen JAVA_HOME verwiesen hatte, verschwand das Problem.

Thambu Zk
quelle
Dies löst nicht unbedingt das Problem für Befehlszeilen-Builds mit Gradle.
IgorGanapolsky