J'ai téléchargé et installé:
- JDK (
jdk-9.0.1_osx-x64_bin.dmg
) d'Oracle ici - SDK Android (
sdk-tools-darwin-3859397.zip
) de Google ici .
Après avoir configuré la PATH
variable, j'ai essayé de l'exécuter sdkmanager
, ce qui a remplacé la android
commande de gestion des composants du SDK. Cependant, il a échoué comme indiqué ici:
$ sdkmanager --list
Exception in thread "main" java.lang.NoClassDefFoundError: javax/xml/bind/annotation/XmlSchema
at com.android.repository.api.SchemaModule$SchemaModuleVersion.<init>(SchemaModule.java:156)
at com.android.repository.api.SchemaModule.<init>(SchemaModule.java:75)
at com.android.sdklib.repository.AndroidSdkHandler.<clinit>(AndroidSdkHandler.java:81)
at com.android.sdklib.tool.SdkManagerCli.main(SdkManagerCli.java:117)
at com.android.sdklib.tool.SdkManagerCli.main(SdkManagerCli.java:93)
Caused by: java.lang.ClassNotFoundException: javax.xml.bind.annotation.XmlSchema
at java.base/jdk.internal.loader.BuiltinClassLoader.loadClass(BuiltinClassLoader.java:582)
at java.base/jdk.internal.loader.ClassLoaders$AppClassLoader.loadClass(ClassLoaders.java:185)
at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:496)
... 5 more
Voici la version Java:
$ java -version
java version "9.0.1"
Java(TM) SE Runtime Environment (build 9.0.1+11)
Java HotSpot(TM) 64-Bit Server VM (build 9.0.1+11, mixed mode)
Quelqu'un sait-il comment y remédier sans revenir à Java 8?
questions connexes
- Échec de l'installation d'android-sdk
- Ce message posait une question similaire. Cependant, l'article est fermé et la seule réponse suggère de revenir à Java 8.
java
android
android-sdk-tools
java-9
android-sdk-manager
Siu Ching Pong -Asuka Kenji-
la source
la source
Réponses:
Avec l'aide de cette réponse , j'ai résolu le problème avec succès.
Nous allons appliquer un correctif dans
sdkmanager
. C'est un script shell. Il se trouve à$android_sdk/tools/bin
,$android_sdk
où vous avez décompressé le SDK Android.sdkmanager
dans votre éditeur préféré.Localisez la ligne qui définit la
DEFAULT_JVM_OPTS
variable. Dans ma copie, c'est à la ligne 31:Ajoutez les options suivantes à la variable:
-XX:+IgnoreUnrecognizedVMOptions --add-modules java.se.ee
. Veuillez prêter attention aux citations. Dans mon exemplaire, la ligne devient:Voici le résultat:
Hola! Ça marche!
- Edit: 07/11/2017 -
Veuillez noter que vous devrez peut-être appliquer à nouveau le correctif ci-dessus après l'exécution
sdkmanager --update
, car lesdkmanager
script shell peut être remplacé si letools
package est mis à jour.Réponses connexes
la source
--add-modules java.se.ee
doit être considéré comme une solution temporaire. La proposition de supprimer le module java.xml.bind de Java SE et le JDK est sous forme de brouillon ici: bugs.openjdk.java.net/browse/JDK-8189188JAVA_OPTS
variable d'environnementexport JAVA_OPTS='-XX:+IgnoreUnrecognizedVMOptions --add-modules java.se.ee'
, au lieu de patcher les fichiers source du SDK?set DEFAULT_JVM_OPTS="-Dcom.android.sdklib.toolsdir=%~dp0.." -XX:+IgnoreUnrecognizedVMOptions --add-modules java.se.ee
pour que lacom.android.sdklib.tool.SdkManagerCli
classe fonctionne correctement-XX:+IgnoreUnrecognizedVMOptions --add-modules java.se.ee
ou `--add-modules java.xml.bind ne fonctionne pas avec Java 11 sur Mac OS. Comment puis-je résoudre ce problème sans installer une autre version de Java?Vous pouvez définir les options de sdkmanager avec SDKMANAGER_OPTS.
Exemple:
la source
set SDKMANAGER_OPTS=--add-modules java.se.ee
La réponse acceptée est obsolète en février 2019. Voici une réponse qui fonctionnera jusqu'à la
sdkmanager
migration vers une version plus récente de Java. Mais d'ici là, vous n'aurez plus ce problème.la source
set JAVA_HOME="...\android-studio\current\jre"
m'aide sur Windows 10 alors que toutes les autres réponses ne l'ont pas faitset JAVA_HOME="C:\Program Files\Android\Android Studio\jre"
a fonctionné pour moi sur Windows 10. Découvrez votre chemin Android Studio. J'ai défini Java 11 sur mon JAVA_HOME d'origineLorsque java 11 est dans le système, les solutions fournies ne sont pas valides.
Ce
-XX:+IgnoreUnrecognizedVMOptions --add-modules java.se.ee or
--add-modules java.xml.bind ne fonctionne pas avec Java 11 sur Mac OS.Pour cette raison, vous devez rétrograder la version java vers la version 8 à partir d'ici: http://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html
Répertorier les versions Java installées
Java 11
Java 1.8
Ensuite aller à
et
la source
bash: /usr/libexec/java_home: file not found
à mon installation.Pour Windows, si rien ne fonctionne, essayez ceci:
Ouvrez
sdkmanager.bat
avec le Bloc-notes.Localisez la ligne suivante:
%JAVA_EXE%" %DEFAULT_JVM_OPTS% %JAVA_OPTS% %SDKMANAGER_OPTS%
Ajouter
--add-modules java.xml.bind
La ligne modifiée devrait ressembler à ceci:
%JAVA_EXE%" %DEFAULT_JVM_OPTS% --add-modules java.xml.bind %JAVA_OPTS% %SDKMANAGER_OPTS%
la source
Comme nous l'avons lu dans les commentaires précédents, cette erreur se produit car la version actuelle du SDK est incompatible avec les dernières versions de Java: 9 et 10.
Donc, pour le résoudre, vous pouvez rétrograder votre version java vers Java 8 ou avec comme solution de contournement, vous pouvez exporter l'option suivante sur votre terminal:
Linux:
Windows :
Cela résoudra cette erreur pour le
sdkmanager
Et pour le sauvegarder en permanence, vous pouvez exporter le JAVA_OPTS dans votre fichier de profil sous linux (
.zshrc
,.bashrc
etc.) ou l'ajouter en tant que variable d'environnement de façon permanente sous Windows.ps. Cela ne fonctionne pas pour Java 11+, qui n'a pas de modules Java EE. Pour cette option est une bonne idée, rétrograder votre version Java ou attendre une mise à jour Flutter .
Réf: JDK 11: Fin de route pour les modules Java EE
la source
--add-modules java.xml.bind
place de--add-modules java.se.ee
Mise à jour 2019-10:
Comme indiqué dans le suivi des problèmes , Google a travaillé sur une nouvelle version des outils SDK qui fonctionne sur les JVM actuels (9+)!
Vous pouvez télécharger et utiliser les nouveaux outils de ligne de commande du SDK Android (1.0.0) dans Android Studio ou en les téléchargeant manuellement à partir des serveurs Google:
Pour les dernières versions, vérifiez les URL dans le repository.xml .
Si vous décompressez manuellement les outils de ligne de commande, veillez à les placer dans un sous-dossier de votre
$ANDROID_HOME
(par exemple$ANDROID_HOME/cmdline-tools/...
).la source
Comme certaines personnes l'ont déjà mentionné, cela pourrait très bien être un problème plus simple lié au fait qu'une installation java a priorité sur l'autre.
Dans mon cas, java 8 était éclipsé par un java plus récent par défaut.
J'ai installé java 8:
Ensuite, j'ai mis à jour le java installé pour qu'il soit le nouveau par défaut:
Par quoi j'ai sélectionné le numéro d'identification de java 8.
Après avoir suivi ces étapes (assez simples), je pourrais simplement exécuter sdkmanager sans erreur.
J'espère que cela aide quelqu'un!
la source
Les outils Android sont toujours incompatibles avec JDK 9 ou 10. Vous devez installer JDK 8 ou, si vous avez besoin de plusieurs versions de Java, assurez-vous que le point de départ Java à l'échelle du système vers un JDK 8.
Plus de détails ici: Comment configurer Unity 2017.4 pour cibler Android et éviter les échecs de compilation sur OSX?
la source
J'ai eu du mal à trouver cette solution en ajoutant simplement le sdkmanager.bat fonctionnel
la source
set CLASSPATH=%APP_HOME%\lib\sdklib-25.3.1.jar
J'ai pu résoudre le problème en utilisant un fichier sdkmanager.bat édité en forçant à utiliser Java intégré dans Android Studio lui-même, qui, je suppose, utilise OpenJDK 8. Voici le sdkmanager édité que j'ai utilisé:
Ici, j'ai utilisé une variable d'environnement ANDROID_STUDIO_JAVA_HOME qui pointe en fait vers le JRE intégré dans le studio Android, par exemple: ../android_studio/jre
Cela a également un retour à JAVA_HOME si ANDROID_STUDIO_JAVA_HOME n'est pas défini.
la source
Bref ajout à ce qui précède pour openJDK 11 avec les outils android sdk avant de passer à la dernière version.
Les solutions ci-dessus n'ont pas fonctionné pour moi
Pour que cela fonctionne, j'ai installé le jaxb-ri (implémentation de référence) à partir du repo maven.
Les informations ont été fournies https://github.com/javaee/jaxb-v2 et des liens vers https://repo1.maven.org/maven2/com/sun/xml/bind/jaxb-ri/2.3.2/jaxb -ri-2.3.2.zip
Ce téléchargement inclut une implémentation d'exécution autonome dans le dossier mod.
J'ai copié le dossier mod dans $ android_sdk \ tools \ lib \ et ajouté ce qui suit à la variable classpath:
;% APP_HOME% \ lib \ mod \ jakarta.xml.bind-api.jar;% APP_HOME% \ lib \ mod \ jakarta.activation-api.jar;% APP_HOME% \ lib \ mod \ jaxb-runtime.jar;% APP_HOME% \ lib \ mod \ istack-commons-runtime.jar;
Alors finalement ça ressemble à:
Peut-être ai-je manqué une bibliothèque en raison d'erreurs mineures. Mais sdkmanager.bat --update ou --list est en cours d'exécution maintenant.
la source
C'est ce que j'ai fait dans Ubuntu 18.04 (n'importe quel Linux fera l'affaire):
la source
La seule solution qui fonctionne pour moi est d'utiliser le java livré avec le studio Android.
définissez JAVA_HOME sur
/Applications/Android\ Studio.app/Contents/jre/jdk/Contents/Home
dans
.bashrc
set JAVA_HOME="/Applications/Android\ Studio.app/Contents/jre/jdk/Contents/Home"
Si vous utilisez
fish
shel, mettez-le dans~/.config/fish/config.fish
set -gx JAVA_HOME /Applications/Android\ Studio.app/Contents/jre/jdk/Contents/Home
(Ceci est pour mac, mais je suis sûr que cela devrait fonctionner avec Linux et Windows en définissant le chemin correct)
la source
JDK 13.0.1, SDK Android 29, Windows 10
En gros, j'ai tout essayé, mais la solution la plus efficace et la seule qui a fonctionné pour moi était de passer à jdk 1.8. Je ne sais pas pourquoi, nous sommes au début de 2020 et je dois revenir à la version jdk d'un an par rapport à la dernière version de flutter. Peut-être que le problème est dans la version Windows, car jdk 13.0.1 a fonctionné pour moi sur macOS 10.15.2. J'espère que cette solution fonctionne.
Lien de téléchargement (JDK 1.8.0): https://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html
la source
Définissez les répertoires personnels de différentes versions de JDK dans votre .bashrc ou .zshrc:
Tout d'abord, utilisez JDK version 8. Mettez cette ligne en haut du
sdkmanager
fichier:Revenez à la version JDK 14. Mettez cette ligne en bas du
sdkmanager
fichier:la source
C'est la réponse pour que cela fonctionne pour Java 11 et au-dessus puisque toutes les API JAXB ont été supprimées.
Téléchargez Jakarta XML Binding , en particulier ce fichier zip . Vous n'avez besoin que des 3 fichiers dans le dossier mod, à savoir jakarta.activation.jar, jakarta.xml.bind-api.jar et jakarta.xml.bind-api.jar et vous pouvez jeter le reste.
Déplacez ces fichiers dans le dossier APP_HOME / lib. J'ai créé un sous-dossier jaxb à l' intérieur pour cela. Donc, sur mon système macOS, c'était: $ HOME / Library / Android / sdk / tools / lib / jaxb
Ouvrez maintenant sdkmanager en utilisant votre éditeur de texte préféré et sous CLASSPATH = ajoutez ce qui suit au début:
Donc, ça a fini par ressembler à:
Et c'est à peu près tout, devrait résoudre le problème.
J'ai fait ces étapes parce que cela me posait des
flutter doctor --android-licenses
problèmes. Et cela l'a corrigé.la source
https://adoptopenjdk.net prend actuellement en charge toutes les distributions de JDK à partir de la version 8. Par exemple https://adoptopenjdk.net/releases.html#x64_win
Voici un exemple de la façon dont j'ai pu utiliser la version 8 de JDK avec sdkmanager et bien plus encore: https://travis-ci.com/mmcc007/screenshots/builds/109365628
Pour JDK 9 (et je pense 10, et peut-être 11, mais pas 12 et au-delà), ce qui suit devrait fonctionner pour que sdkmanager fonctionne:
la source
Une autre solution possible à cette erreur est de vérifier votre version Java, peut-être que vous pouvez la résoudre en téléchargeant ce jdk oracle-jdk-8 , c'était mon erreur: P
la source
Il vous suffit d'installer les fichiers har jaxb et de les inclure dans le chemin de classe. cela fonctionne dans java 11 à 12 plus tard.
Pour ceux qui recherchent le correctif, j'ai fait un peu d'essentiel dans github, espérons que cette aide. et les liens sont également fournis.
https://gist.github.com/Try-Parser/b7106d941cc9b1c9e7b4c7443a7c3540
la source
Je télécharge le SDK Java 8
cmd-> flutter doctor --install -licenses
et aprèsla source
Apparemment, si vous utilisez la version "commandlinetools" supérieure à 3.6.0, vous pouvez utiliser JDK11 + pour installer les composants du SDK Android.
Ils sont disponibles ici: https://developer.android.com/studio#command-tools
Suivi des problèmes officiel indiquant qu'il est résolu: https://issuetracker.google.com/issues/122210344#comment11
la source
C'est très simple, il suffit d'exporter la
JAVA_HOME
variable d'environnement, définie sur le chemin de votre installation JDK.J'ai installé Java manuellement sur Ubuntu, et donc pour moi cela ressemble à:
Et assurez-vous qu'il existe aussi sur votre chemin ...
la source