Version major.minor 52.0 non prise en charge dans mon application

126

J'essaye de compiler mon projet Android et j'obtiens cette erreur

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

J'ai lu dans un autre article que tenter de compiler avec Java 8 pourrait causer cette erreur mais pas mon cas, j'ai la version Java suivante:

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)

OS: Linux Mint (Je n'ai pas installé Java 8.) Build: MAVEN

Est-ce que quelqu'un peut m'aider avec ça?

Rafael Reyes
la source
2
On dirait que vous utilisez peut-être des bibliothèques compilées java 8 avec jdk local 7.
Taylor
comment puis-je résoudre ce problème? @Taylor
Rafael Reyes
4
passez à jdk 8, ou utilisez une ancienne version de la bibliothèque contenantcom/android/dx/command/Main
Taylor
Je ne suis pas autorisé à passer à jdk 8, comment rétrograder la version de la bibliothèque contenant com / android / dx / command / Main? @Taylor
Rafael Reyes
1
Impossible d'utiliser le chat d'où je suis.
Taylor

Réponses:

236

Je suis également confronté à ce problème lors de la création d'un nouveau projet à partir d'Android Studio.

J'ai pu résoudre ce problème en rétrogradant buildToolsVersion dans le paramètre de gradle de l'application: changez la ligne {module-name} /build.gradle

buildToolsVersion "24.0.0 rc1"

à

buildToolsVersion "23.0.3"


@Edit:
Dans Android Studio 2.1, accédez à Fichier-> Structure du projet- > Application -> Version de l'outil de création. Changez-le en 23.0.3

Suivez la méthode ci-dessus, uniquement lorsque vous utilisez la version 7 de java et que pour une raison quelconque, vous ne souhaitez pas encore mettre à niveau vers java 8.

J'espère que cela t'aides

Rudy Kurniawan
la source
@RafaelReyes Je ne sais rien de la création d'un projet Android avec maven. Mais comme Android utilise de toute façon des outils de construction, vous ne trouvez pas la version de votre version d'outil de construction utilisée dans la configuration maven?
Rudy Kurniawan
1
@RudyKurniawanHi, je suppose que c'est <version> 4.1.1.4 </version>
Rafael Reyes
2
La nouvelle version: buildToolsVersion "23.0.3"
XurajB
1
cela a aidé merci pour la réponse, mais que devons-nous faire si nous avons besoin de build 24 ??
shridutt kothari
2
pour cela, vous devez utiliser java 8 pour créer votre application
Rudy Kurniawan
43

Gradle Scripts >> build.gradle (application de module)

Remplacez buildToolsVersion "24.0.0" par buildToolsVersion "23.0.3"

source: expérience

Febrianto Nugroho
la source
10
Pourquoi recommandez-vous ce déclassement? Qu'est ce que ça fait?
J Fabian Meier
Pourquoi 23.0.3 est- il préférable?
IgorGanapolsky
31

Au départ, j'avais rétrogradé buildToolsVersionde 24.0.0 rc3à 23.0.3, comme spécifié dans la réponse de Rudy Kurniawan. Ensuite, j'ai remarqué que jdk 7 était spécifié dans les paramètres de mon projet. Je l'ai changé en jdk 8 et maintenant les outils de construction 24.0.0 rc3fonctionnent.

entrez la description de l'image ici

Il est également important que les options de compilation soient définies sur java7:

android {
    ...
    compileOptions {
        sourceCompatibility JavaVersion.VERSION_1_7
        targetCompatibility JavaVersion.VERSION_1_7
    }
}
Denis Kniazhev
la source
Cela a résolu mon problème avec AndroidStudio 2. Je recevais un tas d'erreurs étranges.
wmac
Avec la dernière version 25.0.1 de buildToolsVersion , il nécessite Java 8.
IgorGanapolsky
14

J'ai installé Android Studio avec Xamarin Visual Studio (était déjà installé). Après l'installation (à l'exclusion du SDK, car ils étaient déjà installés), j'ai démarré Android Studio et il a téléchargé, installé et ajouté les SDK manquants (après avoir indiqué le chemin d'accès à l'emplacement du SDK). En conséquence, j'ai reçu le message d'erreur lors de la construction

java.lang.UnsupportedClassVersionError: com / android / dx / command / Main: version majeure.minor 52.0 non prise en charge

En tant que solution, j'ai installé jdk-8u101-windows-i586.exesans JRE (car il était déjà installé). Avant, j'ai essayé la version x64, mais elle a disparu ... Ensuite, vous devez changer l' emplacement du kit de développement Java .

Modifier l'emplacement du JDK

Cela se fait dans Visual Studio en cliquant sur Outils> Options> Xamarin> Paramètres Android. Ici, vous pouvez naviguer vers l'emplacement correct. Dans mon cas, c'était le cas C:\Program Files (x86)\Java\jdk1.8.0_101.

Enfin, nettoyez votre projet et faites une nouvelle compilation :-)

essai
la source
"Ou définissez la propriété AndroidSdkBuildToolsVersion MSBuild sur une version antérieure. Par exemple, si la version 23.0.3 est également installée, vous pouvez ajouter la ligne suivante dans l'élément <PropertyGroup> supérieur dans le fichier .csproj du projet Android: <AndroidSdkBuildToolsVersion> 23.0 .3 </AndroidSdkBuildToolsVersion> " ref: releases.xamarin.com
...
8

Le problème a précisé:

Exception dans le thread "main" java.lang.UnsupportedClassVersionError: com / android / dx / command / Main: version major.minor 52 non prise en charge.

est causé lorsque est déclaré dans le build.gradle, buildToolsVersion 24et nous n'avons pas installé Java 8 qui est requis pour cette version . Pour résoudre ce problème, nous devons passer buildToolsVersionde 24 au maximum 23:

entrez la description de l'image ici

Java 8 doit être requis à l'avenir pour Android Studio, nous devons donc commencer à utiliser Java 8.

Jorgesys
la source
6

J'ai eu le même problème avec ma version IntelliJ Maven. Ma «solution» était d'aller dans les outils de construction et de supprimer le dossier des outils de construction 24.0.0. Je l'ai trouvé dans l' {android-sdk-location}/build-tools/annuaire. Ce n'est pas une solution à long terme, mais cela devrait au moins relancer la construction de votre projet. La mise à niveau vers Java 8, comme beaucoup l'ont suggéré, sera meilleure à long terme.

sotrh
la source
C'est la première option que je pourrais réellement utiliser, car je n'ai pas trouvé les paramètres mentionnés dans d'autres réponses dans l'interface utilisateur d'Android Studio. Je l'ai supprimé puis créé un nouveau projet et cela a fonctionné.
Mitch
5

J'ai également rencontré ce problème lors de la réalisation d'un nouveau projet dans eclipse.

  1. Ouvrez votre répertoire d'installation eclipse
  2. Ouvrez le fichier eclipse.ini
  3. Modifier

    Dosgi.requiredJavaVersion=1.6 

    à

    Dosgi.requiredJavaVersion=1.7

J'espère que cela t'aides

user6661437
la source
J'ajoute la ligne «Dosgi.requiredJavaVersion = 1.7» à /Applications/eclipse/configuration/config.ini Fonctionne parfaitement sur mon macOS Sierra
Bob Cheng
Qu'est-ce qui vous fait penser que la question d'OP est associée à Eclipse?
IgorGanapolsky
5

Ce que personne ne dit ici, c'est qu'avec Build Tools 24.0.0, Java 8 est requis et la plupart des gens ont 1.6 ou 1.7.

Donc oui, définir l'outil de construction sur 23.xx «résoudrait» le problème, mais la cause première est la version Java de votre système.

À long terme, vous souhaiterez peut-être mettre à niveau votre environnement de développement pour utiliser JDK8 afin d'utiliser les nouvelles améliorations du langage et le compilateur jack.

Jay Sidri
la source
5

52 est le code pour JDK 8. Vous pouvez le voir ici: http://javarevisited.blogspot.com/2015/05/fixing-unsupported-majorminor-version.html . Gradle s'attend donc à ce que vous ayez JDK 8 comme version Java par défaut sur votre machine. Les dernières versions de Gradle pour Android ne fonctionneront pas avec Java 7.

La solution est simple: faites de Java 8 la version jdk par défaut sur votre machine.

IgorGanapolsky
la source
Comment fait-on ça?
GuidoG
@GuidoG Vous devez suivre les instructions d'installation correspondant à votre système d'exploitation spécifique. Recherchez-le simplement sur Google et vous obtiendrez les instructions détaillées. L'objectif est de pouvoir exécuter java -version à partir de la ligne de commande et de le voir comme 1.8.
IgorGanapolsky
4

Je suis sur Android Studio 2.0 et je suis confronté au même problème. La solution fournie par Rudy Kurniawan a résolu ce problème. Le fichier concerné peut être localisé par:

"Projet" -> "Android" -> "Scripts Gradle" -> "build.gradle (Module: app)"

Le volet " Projet " est par défaut sur la gauche. Pour le trouver, inspectez le nom des onglets latéraux, cliquez dessus, puis utilisez le menu déroulant du haut pour accéder à " Android ". Développez l'arborescence dans le volet pour trouver le fichier cible. Double-cliquez dessus pour le modifier.

grossier
la source
Je suis sur Intellij IDEA avec Maven Build.
Rafael Reyes
4

Désolé pour la réponse tardive, j'espère que cela aide quelqu'un d'autre

Ce problème est lié à votre SDK, pas à votre JDK. Vous pouvez vérifier vos informations de version à partir de

Aide> À propos> Afficher les détails

Vous obtiendrez quelque chose comme

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

Versions Android prises en charge:

4.0.3 (niveau d'API 15)

4.4 (niveau d'API 19)

6.0 (niveau d'API 23)

Version des outils SDK: 24.4.1

Version des outils de la plate-forme SDK: 23.0.1

Version des outils de création du SDK: 24 rc2

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

version java "1.7.0_71"

Environnement d'exécution Java (TM) SE (build 1.7.0_71-b14)

VM client Java HotSpot (TM) (build 24.71-b01, mode mixte, partage)

Si vous utilisez des outils de prévisualisation pour la construction, vous obtiendrez des erreurs similaires partout.

Que faire maintenant?

aller à

Outils -> Gestionnaire de SDK

  1. Sélectionnez tous les éléments dans les canaux de prévisualisation, y compris Android SDK build toolsavec rev 24rc2ou 24rc4(dernier)

  2. Cliquer sur Delete 'n' packages

Comment désactiver la chaîne de prévisualisation

  1. Dans le gestionnaire de SDK, sélectionnez

    Outils> options

  2. Décocher Enable preview tools

Et quoi

Retour à votre code Nettoyer tout et reconstruire (dans de rares cas, vous devez sélectionner les outils de construction dans la page des paramètres du projet)

Habel Philippe
la source
Cela a bien fonctionné pour moi. mais avant cela, j'ai installé jdk 8 et changé le répertoire comme décrit dans une autre réponse ici,
Abdur Rahim
Comment Xamarin est-il pertinent par rapport à la question d'OP?
IgorGanapolsky
"Ou définissez la propriété AndroidSdkBuildToolsVersion MSBuild sur une version antérieure. Par exemple, si vous avez également installé la version 23.0.3, vous pouvez ajouter la ligne suivante dans l'élément <PropertyGroup> supérieur du fichier .csproj du projet Android: <AndroidSdkBuildToolsVersion> 23.0 .3 </AndroidSdkBuildToolsVersion> "
samis
2

Merci à tous pour la solution.

Je pourrais résoudre mon même problème en utilisant la solution ci-dessous.

Dans mon projet, j'ai ajouté des jar qui ont été créés en Java8. Et mon projet faisait référence à JRE 7. Quand j'ai changé le projet JRE en 8. Mon problème a été résolu.

Étapes: Dans eclipse, cliquez avec le bouton droit sur le nom du projet dans l'explorateur de projet> chemin de construction> Bibliothèques> cliquez sur la version jre> cliquez sur modifier> JRE installé> ajouter> VM standerd> sélectionnez le chemin de clic de la maison JRE (le chemin doit être localePath \ java \ jdk1 .8.0_25 \ jre)> fournir un nom> enregistrer> sélectionner le même JRE pour le projet> terminer> ok Actualiser / construire le projet une fois> essayez d'exécuter votre fichier java. ça devrait marcher.

haithem
la source
2

Obtenez ce message d'erreur sur le serveur de construction de travis?

Je fixe mon travis construire avec buildToolsVersion « 24.0.2 » en utilisant cette

# 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
la source
c'est correct. quand j'ai essayé de réparer mon travis build, j'ai trouvé cette question qui ne m'a pas aidé. après avoir découvert comment résoudre ce problème, j'ai ajouté ceci à pour d'autres personnes ayant le même problème
k3b
2

Dans mon cas, le jdk par défaut était 1.7, puis je l'ai changé en 1.8 en naviguant jusqu'au dossier exact où se trouve le jdk mis à jour.

Hedego
la source
cela a fonctionné pour moi! besoin d'avoir la version 1.8 jdk installée et ciblée
hewstone
1

J'ai eu le même problème et j'ai essayé de changer la version, c'est parfois pour la version d'Android Studio dans Project> Gradle Scripts> build.gradle (Module: app), vous pouvez changer la version. Par exemple:

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

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

De cette question.

Vous pouvez essayer de modifier le niveau de votre compilateur à 1.7 dans l'EDI que vous utilisez.

  • Si vous êtes sur Eclipse, allez dans Windows ---> Préférences puis sélectionnez Java et développez-le, puis sélectionnez Compilateur et modifiez le niveau de conformité à 1.7.
  • Si vous utilisez Android Studio, vous pouvez l'ajouter à votre 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
        }
    }

Si cela ne vous aide pas, essayez de vérifier la réponse des autres dans le lien mentionné ci-dessus et dites-nous ce qui vous a aidé.

Cristianorbs
la source
1
J'utilise Maven et IntelliJ.
Rafael Reyes
Dans ce cas, vous pouvez changer la source et la cible en 1.7 configuration interne sur le plugin du compilateur maven
cristianorbs
1

Vos outils de build Android ne sont pas correctement installés. Essayez d'installer une autre version des outils de compilation et indiquez cette version dans le fichier gradle. ou vous pouvez aller dans ce répertoire

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

et voyez quels outils de construction sont installés. Essayez de changer la version de l'outil de construction dans le fichier gradle et compilez l'application pour voir si cela fonctionne.

J'avais les versions 22.0.1, 23.0.02 et 24.0.0 des outils de construction et seule l'ancienne version 22.0.1 fonctionnait.

source: je l'ai essayé moi-même et cela a fonctionné pour moi.

Swathin
la source
1

Ce problème provient du fait que la version de votre outil de construction et JDK ne fonctionneront pas ensemble. J'utilisais JDK version 7 avec l'outil de construction 24.0.1. Bien sûr, la réduction de la version de l'outil de construction peut résoudre le problème, mais ce n'est pas une vraie solution, car la mise à niveau de vos outils de construction à l'avenir le résoudra à nouveau.

Vous devez vous assurer que la version de l'outil de construction et JDK fonctionnent ensemble. J'ai mis à niveau mon outil de construction vers le dernier (24.0.1) et installé jdk8. Assurez-vous de définir votre JAVA_HOME sur la dernière version, puis essayez une nouvelle version.

GodOnScooter
la source
1

Vous avez le même problème en dehors d'Android Studio, lorsque vous essayez de construire pour Cordova en utilisant le sdk à partir de la ligne de commande (cordova build android).

La solution fournie par Rudy fonctionne également dans ce cas. Vous ne rétrogradez tout simplement pas la version de Build Tools d'Android Studio, mais vous le faites à l'aide de l'interface utilisateur du gestionnaire de sdk android.

Andrea Gherardi
la source
0

Je viens de rencontrer ce problème.

Le retour des versions "Preview Channel" des outils SDK et des outils de construction à la dernière version stable a corrigé le problème.

Mike Playle
la source
0

Changer com.android.tools.build:gradle:2.2.0-beta1pour le com.android.tools.build:gradle:2.1.2réparer pour moi.

Ma version Android Studio est 2.1.2, c'est peut-être pourquoi

Ericn
la source
0

La solution la plus simple est que vous devez mettre à jour votre JDK vers la dernière version. Parce que Cordova ne prend en charge que le dernier JDK.

1 . Tout d'abord, vous devez mettre à jour votre SDK Android. Ensuite,

2. Si vous ne parvenez pas à mettre à jour via votre terminal, accédez à votre centre logiciel de destruction Linux et recherchez le dernier (celui que vous souhaitez installer) et installez celui-ci.

Ensuite, exécutez à nouveau Cordova build .

Cela résoudra le problème.

Dans mon cas, cela a fonctionné.

PyDevSRS
la source
0

Vous devez aller dans le répertoire d'installation de votre SDK et vous assurer que le sous-répertoire / build-tools correspond buildToolsVersionà celui du fichier build.gradle de votre application: entrez la description de l'image ici

IgorGanapolsky
la source
0

Vérifiez que la dernière version du SDK est installée dans C:\Program Files\JavaouC:\Program Files (x86)\Java

Ensuite, allez dans VS2015 et suivez le chemin outils - options - Xamarin - Paramètres Android et dans la section Emplacement du JDK, sélectionnez le changement et recherchez la version que vous avez soit x64 ou x32.

génomma
la source
0

Je suis sur cordova, voici ce que j'ai fait:

- renommez votre projet Android, afin qu'il y ait de la place pour un nouveau
- mettez à jour le kit de développement JAVA vers 1.8 (le dernier au moment de la rédaction de ceci)
- exécutezcordova platform add android

Devrait fonctionner sans problèmes maintenant. Le hachage de votre application changera, donc si vous l'utilisez pour la connexion à facbeook, vous devrez le mettre à jour

mate.gwozdz
la source
0

J'avais ce problème depuis trop longtemps (SO, etc. n'avait pas aidé) et je venais de le résoudre (en utilisant sdk 25).

-Le fichier local.properties proguard.dir var ne s'appliquait pas avec ant; J'avais spécifié 5.3.2, mais un appel de ligne de commande et une construction d'exportation signée (eclipse) utilisaient 4.7, à partir du dir sdk (seulement 5+ prend en charge java 8)

Ma solution était de remplacer les jars proguard (répertoire android-sdk / tools / proguard / libs) dans le sdk par une version actuelle (5+) de proguard.

rndStr
la source
0

Une erreur de version majeure non prise en charge peut être due à une version JDK non prise en charge. Mettez à jour le JDK, accédez aux paramètres du module et remplacez le chemin JDK par le nouveau. Dans la plupart des cas, il corrige l'erreur.

Rachit Murarka
la source
-1

J'ai installé deux versions de java jdk. Une fois que j'ai indiqué la bonne version de java jdk dans File-> Project Structure -> SDK Location vers la dernière version que j'avais dans la variable d'environnement JAVA_HOME, le problème a disparu.

Thambu Zk
la source
Cela ne résout pas nécessairement le problème des versions de ligne de commande avec Gradle.
IgorGanapolsky