Major.minor versione 52.0 non supportata nella mia app


126

Sto provando a compilare il mio progetto Android e visualizzo questo errore

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

Ho letto in altri post che provare a compilare con Java 8 potrebbe causare quell'errore ma non il mio caso, ho la seguente versione di 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)

Sistema operativo: Linux Mint (non ho installato Java 8). Build: MAVEN

Qualcuno mi può aiutare con questo?


2
Sembra che tu stia usando librerie compilate java 8 con jdk locale 7.
Taylor

come posso ripararlo? @Taylor
Rafael Reyes

4
passare a jdk 8 o utilizzare una versione precedente della libreria contenentecom/android/dx/command/Main
Taylor

Non posso passare a jdk 8, come posso effettuare il downgrade della versione della libreria contenente com / android / dx / command / Main? @Taylor
Rafael Reyes

1
Non riesco a utilizzare la chat da dove mi trovo.
Taylor,

Risposte:


236

Devo affrontare questo problema anche quando realizzo un nuovo progetto da Android Studio.

Sono stato in grado di risolvere questo problema eseguendo il downgrade di buildToolsVersion nell'impostazione del grado dell'app: change {module-name} /build.gradle line

buildToolsVersion "24.0.0 rc1"

per

buildToolsVersion "23.0.3"


@Edit:
in Android Studio 2.1 Vai su File-> Struttura del progetto-> App -> Versione strumento di compilazione. Modificalo in 23.0.3

Esegui il metodo sopra, solo quando stai utilizzando java versione 7 e per qualche motivo non vuoi ancora eseguire l'aggiornamento a java 8.

Spero che questo ti aiuti


@RafaelReyes Non so nulla sulla costruzione di un progetto Android con Maven. Ma dal momento che Android usa gli strumenti di compilazione, non riesci a trovare quale versione ha utilizzato la tua versione dello strumento di build nella configurazione di Maven?
Rudy Kurniawan,

1
@RudyKurniawanHi, immagino sia <version> 4.1.1.4 </version>
Rafael Reyes,

2
La versione più recente: buildToolsVersion "23.0.3"
XurajB

1
mi ha aiutato grazie per la risposta, ma cosa dobbiamo fare se abbiamo bisogno di costruire 24 ??
Shridutt Kothari,

2
per questo, dovresti usare java 8 per creare la tua app
Rudy Kurniawan il


31

Inizialmente avevo effettuato il downgrade buildToolsVersionda 24.0.0 rc3a 23.0.3, come specificato nella risposta di Rudy Kurniawan. Poi ho notato che ho specificato jdk 7 nelle impostazioni del mio progetto. L'ho cambiato in jdk 8 e ora costruisco gli strumenti di 24.0.0 rc3lavoro.

inserisci qui la descrizione dell'immagine

È anche importante che le opzioni di compilazione siano impostate su java7:

android {
    ...
    compileOptions {
        sourceCompatibility JavaVersion.VERSION_1_7
        targetCompatibility JavaVersion.VERSION_1_7
    }
}

Ciò ha risolto il mio problema con AndroidStudio 2. Stavo ricevendo un sacco di strani errori.
wmac,

Con il nuovissimo buildToolsVersion 25.0.1 , richiede Java 8.
IgorGanapolsky

14

Ho installato Android Studio insieme a Xamarin Visual Studio (era già installato). Dopo l'installazione (escluso l'SDK, perché erano già installati) ho avviato Android Studio e scaricato, installato e aggiunto gli SDK mancanti (dopo aver fornito il percorso alla posizione dell'SDK). Di conseguenza ho ricevuto il messaggio di errore su build

java.lang.UnsupportedClassVersionError: com / android / dx / command / Main: versione major.minor non supportata 52.0

Come soluzione ho installato jdk-8u101-windows-i586.exesenza JRE (perché era già installato). Prima ho provato la versione x64, ma è scomparsa ... Quindi devi cambiare la posizione del Java Development Kit .

Cambia posizione JDK

Questo viene fatto in Visual Studio facendo clic su Strumenti> Opzioni> Xamarin> Impostazioni Android. Qui è possibile navigare verso la posizione corretta. Nel mio caso lo era C:\Program Files (x86)\Java\jdk1.8.0_101.

Infine, pulisci il tuo progetto e crea una nuova build :-)


"O imposta la proprietà MSBuild di AndroidSdkBuildToolsVersion su una versione precedente. Ad esempio, se hai installato anche la versione 23.0.3, puoi aggiungere la seguente riga all'interno dell'elemento <PropertyGroup> nel file .csproj del progetto Android: <AndroidSdkBuildToolsVersion> 23.0 .3 </ AndroidSdkBuildToolsVersion>" ref: releases.xamarin.com/...
Sami

8

Il problema specificato:

Eccezione nel thread "main" java.lang.UnsupportedClassVersionError: com / android / dx / command / Main: Major.minor versione 52 non supportata.

è causato quando viene dichiarato all'interno build.gradle, buildToolsVersion 24e non disponiamo Java 8 installato ciò che è richiesto per questa versione . Per risolvere questo problema dobbiamo cambiare buildToolsVersionda 24 a massimo 23:

inserisci qui la descrizione dell'immagine

Java 8 deve essere richiesto in futuro per Android Studio, quindi dobbiamo iniziare a usare Java 8.


6

Ho avuto lo stesso problema con la mia build IntelliJ Maven. La mia "soluzione" era quella di andare negli strumenti di compilazione e rimuovere la cartella 24.0.0 degli strumenti di compilazione. L'ho trovato nella {android-sdk-location}/build-tools/directory. Questa non è una soluzione a lungo termine, ma questo dovrebbe almeno far ricominciare a costruire il tuo progetto. L'aggiornamento a Java 8, come molti hanno suggerito, sarà meglio a lungo termine.


Questa è la prima opzione che potrei effettivamente utilizzare, perché non sono riuscito a trovare le impostazioni menzionate in altre risposte nell'interfaccia utente di Android Studio. L'ho eliminato e poi ho creato un nuovo progetto e ha funzionato.
Mitch,

5

Ho anche affrontato questo problema durante la realizzazione di un nuovo progetto in eclissi.

  1. Apri la tua directory di installazione di eclipse
  2. Apri il file eclipse.ini
  3. Modificare

    Dosgi.requiredJavaVersion=1.6 

    per

    Dosgi.requiredJavaVersion=1.7

Spero che questo ti aiuti


Aggiungo la riga "Dosgi.requiredJavaVersion = 1.7" a /Applications/eclipse/configuration/config.ini Funziona perfettamente sul mio macOS Sierra
Bob Cheng,

Cosa ti fa pensare che la domanda di OP sia associata a Eclipse?
IgorGanapolsky,

5

Ciò che nessuno qui sta dicendo è che con Build Tools 24.0.0 è necessario Java 8 e la maggior parte delle persone ha 1.6 o 1.7.

Quindi sì, l'impostazione dello strumento di compilazione su 23.xx 'risolve' il problema ma la causa principale è la versione Java sul tuo sistema.

A lungo termine, potresti voler aggiornare il tuo ambiente di sviluppo per utilizzare JDK8 per utilizzare i nuovi miglioramenti del linguaggio e il compilatore jack.


5

52 è il codice per JDK 8. Puoi vederlo qui: http://javarevisited.blogspot.com/2015/05/fixing-unsupported-majorminor-version.html . Quindi Gradle si aspetta che tu abbia JDK 8 come versione Java predefinita sul tuo computer. Le versioni più recenti di Gradle per Android non funzioneranno con Java 7.

La soluzione è semplice: imposta Java 8 come versione jdk predefinita sul tuo computer.


Come si fa a farlo ?
GuidoG

@GuidoG È necessario seguire le istruzioni di installazione per il proprio sistema operativo specifico. Basta cercarlo su Google e otterrai le istruzioni dettagliate. L'obiettivo è quello di poter eseguire java -version dalla riga di comando e vederlo come 1.8.
IgorGanapolsky

4

Sono su Android Studio 2.0 e sto affrontando lo stesso problema. La soluzione fornita da Rudy Kurniawan ha risolto questo problema. Il file interessato può essere individuato da:

"Progetto" -> "Android" -> "Gradle Scripts" -> "build.gradle (Modulo: app)"

Il riquadro " Progetto " è predefinito a sinistra. Per trovarlo, controlla il nome delle schede laterali, fai clic su di esso, quindi utilizza la casella in alto a discesa per accedere a " Android ". Espandere l'albero nel riquadro per trovare il file di destinazione. Fare doppio clic per modificarlo.


Sono su Intellij IDEA con Maven Build.
Rafael Reyes,

4

Ci scusiamo per la risposta tardiva. Spero che aiuti qualcun altro

Questo problema è correlato al tuo SDK, non al tuo JDK. Puoi controllare le informazioni sulla tua versione da

Aiuto> Informazioni> Mostra dettagli

Otterrai qualcosa di simile

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

Versioni Android supportate:

4.0.3 (livello API 15)

4.4 (livello API 19)

6.0 (livello API 23)

Versione strumenti SDK: 24.4.1

SDK Platform Tools Versione: 23.0.1

SDK Build Tools Versione: 24 rc2

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

versione java "1.7.0_71"

Java (TM) SE Runtime Environment (build 1.7.0_71-b14)

Java VM client HotSpot (TM) (build 24.71-b01, modalità mista, condivisione)

Se stai usando strumenti di anteprima per la costruzione, otterrai errori simili dappertutto.

Cosa fare adesso?

vai a

Strumenti -> Gestore SDK

  1. Seleziona tutti gli elementi nei canali di anteprima anche Android SDK build toolscon rev 24rc2o 24rc4(latest)

  2. Clicca su Delete 'n' packages

Come disattivare il canale di anteprima

  1. Nel gestore SDK, selezionare

    Strumenti> opzioni

  2. Deseleziona Enable preview tools

E cosa

Torna al codice Pulisci tutto e ricostruisci (in rari casi, devi selezionare gli strumenti di compilazione dalla pagina delle impostazioni del progetto)


Questo ha funzionato per me bene. ma prima ho installato jdk 8 e modificato la directory come descritto in un'altra risposta qui,
Abdur Rahim,

In che modo Xamarin è rilevante per la domanda di OP?
IgorGanapolsky,

"O imposta la proprietà AndroidSdkBuildToolsVersion MSBuild su una versione precedente. Ad esempio, se hai installato anche la versione 23.0.3, puoi aggiungere la seguente riga all'interno dell'elemento <PropertyGroup> nel file .csproj del progetto Android: <AndroidSdkBuildToolsVersion> 23.0 .3 </AndroidSdkBuildToolsVersion> "
samis

2

Grazie a tutti per la soluzione.

Potrei risolvere il mio stesso problema usando la soluzione di seguito.

Nel mio progetto, ho aggiunto jar che sono stati creati in Java8. E il mio progetto si riferiva a JRE 7. Quando ho cambiato il progetto JRE su 8. Il mio problema è stato risolto.

Passaggi: in eclipse, fai clic con il pulsante destro del mouse sul nome del progetto in Esplora progetti> percorso build> Librerie> fai clic su versione jre> fai clic su modifica> JRE installato> aggiungi> VM standerd> seleziona percorso clic home JRE (il percorso deve essere localePath \ java \ jdk1 .8.0_25 \ jre)> fornire nome> salva> seleziona lo stesso JRE per il progetto> finitura> ok Aggiorna / crea progetto una volta> prova a eseguire il tuo file java. dovrebbe funzionare.


2

Ricevi questo messaggio di errore sul server travis build?

Ho risolto il mio travis build con buildToolsVersion "24.0.2" usando questo

# 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

è corretto. quando ho provato a risolvere il mio travis build ho trovato questa domanda che non mi ha aiutato. dopo aver scoperto come risolvere, l'ho aggiunto ad altri con lo stesso problema
k3b,

2

Nel mio caso il jdk predefinito era 1.7, quindi l'ho cambiato in 1.8 sfogliando la cartella esatta in cui si trova il jdk aggiornato.


questo ha funzionato per me! è necessario disporre della versione 1.8 jdk installata e mirata
hewstone,

1

Ho avuto lo stesso problema e ho provato a cambiare la versione, a volte è per la versione di Android Studio in Progetto> Script di livello> build.gradle (Modulo: app) è possibile modificare la versione. Per esempio:

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

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

1

Da questa domanda.

Puoi provare a ripristinare il livello del compilatore a 1,7 nell'IDE che stai utilizzando.

  • Se utilizzi Eclipse, vai su Windows ---> Prefences, quindi seleziona Java ed espandi, quindi seleziona Compilatore e modifica il livello di conformità su 1.7.
  • Se utilizzi Android Studio, puoi aggiungerlo a 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
        }
    }

Se questo non aiuta, prova a controllare la risposta degli altri nel link sopra menzionato e facci sapere cosa ti ha aiutato.


1
Sto usando Maven e IntelliJ.
Rafael Reyes,

In questo caso, è possibile modificare l'origine e la destinazione in 1.7 all'interno della configurazione sul plugin del compilatore Maven
cristianorbs

1

I tuoi strumenti di build Android non sono installati correttamente. Prova a installare un'altra versione degli strumenti di compilazione e fornisci quella versione nel file gradle. oppure puoi andare in questa directory

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

e vedere quali strumenti di compilazione sono installati. Prova a cambiare la versione dello strumento di compilazione nel file gradle e compila l'app per vedere se funziona.

avevo versioni 22.0.1,23.0.02 e 24.0.0 di strumenti di build e funzionava solo la vecchia versione 22.0.1.

fonte: l'ho provato da solo e ha funzionato per me.


1

Questo problema deriva dal fatto che la versione dello strumento di compilazione e JDK non funzioneranno insieme. Stavo usando JDK versione 7 con lo strumento di creazione 24.0.1. Naturalmente la riduzione della versione dello strumento di compilazione può risolvere il problema, ma non è una vera soluzione, poiché l'aggiornamento degli strumenti di compilazione in futuro lo risolverà di nuovo.

Dovresti assicurarti che la versione dello strumento di compilazione e JDK funzionino insieme. Ho aggiornato il mio strumento di build alla versione più recente (24.0.1) e installato jdk8. Assicurati di impostare il tuo JAVA_HOME sul più recente, quindi prova a creare una build pulita.


1

Ho avuto lo stesso problema fuori da Android Studio, quando provavo a compilare per Cordova usando sdk dalla riga di comando (cordova build android).

La soluzione fornita da Rudy funziona anche in questo caso. Semplicemente non esegui il downgrade della versione di Build Tools da Android Studio ma lo fai utilizzando l'interfaccia utente di Android SDK Manager.


0

Ho appena riscontrato questo problema.

Il ripristino dalle versioni "Preview Channel" degli strumenti SDK e degli strumenti di build all'ultima versione stabile lo ha risolto.


0

Cambiando com.android.tools.build:gradle:2.2.0-beta1per com.android.tools.build:gradle:2.1.2risolverlo per me.

La mia versione di Android Studio è la 2.1.2, forse è per questo


0

La soluzione più semplice è che devi aggiornare il tuo JDK alla versione più recente. Perché Cordova supporta solo gli ultimi JDK.

1 . Prima di tutto devi aggiornare il tuo SDK Android. Poi,

2. Se non riesci ad aggiornare tramite il tuo terminale, vai al tuo Software center di Linux distruggi e cerca l'ultimo (quale vuoi installare) e installa quello.

Quindi eseguire nuovamente Cordova build .

Risolverà il problema.

Nel mio caso ha funzionato.


0

Devi andare nella tua directory di installazione dell'SDK e assicurarti che la sottodirectory / build-tools corrisponda al buildToolsVersionfile build.gradle della tua app: inserisci qui la descrizione dell'immagine


0

Verifica che sia installata la versione più recente dell'SDK C:\Program Files\Java oC:\Program Files (x86)\Java

Quindi vai su VS2015 e segui gli strumenti del percorso - opzioni - Xamarin - Impostazioni Android e nella sezione Posizione JDK seleziona cambia e vai a cercare la versione che hai x64 o x32.


0

Sono su Cordova, ecco cosa ho fatto:

- Rinomina il tuo progetto Android, in modo che ci sia spazio per uno nuovo
- aggiorna JAVA Development Kit a 1.8 (l'ultimo nel momento in cui scrivo questo)
- Eseguicordova platform add android

Dovrebbe funzionare senza problemi ora. L'hash della tua app cambierà, quindi se lo stai usando per il login di facbeook, dovrai aggiornarlo


0

Avevo avuto questo problema per troppo tempo (SO ecc. Non mi aveva aiutato) e l'avevo risolto solo (usando sdk 25).

-Il file local.properties proguard.dir var non si applicava con ant; Avevo specificato 5.3.2, ma una chiamata da riga di comando e una build di esportazione firmata (eclipse) utilizzavano 4.7, dalla directory sdk (solo 5+ supporta java 8)

La mia soluzione era sostituire i vasi proguard (directory android-sdk / tools / proguard / libs) nel sdk con una versione corrente (5+) di proguard.


0

L'errore unsupported-major-minor-version può essere dovuto alla versione JDK non supportata. Aggiorna JDK, vai su Impostazioni modulo e modifica il percorso JDK in quello nuovo. Nella maggior parte dei casi, corregge l'errore.


-1

Avevo installato due versioni di java jdk. Una volta che ho indicato la versione corretta di java jdk in File-> Struttura del progetto -> Posizione SDK all'ultima versione che avevo nella variabile di ambiente JAVA_HOME, il problema è scomparso.


Questo non risolve necessariamente il problema delle build da riga di comando con Gradle.
IgorGanapolsky,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.