Impossible d'exécuter la sdkmanager --list (Android SDK) Java 9
J'ai téléchargé et installé:
- JDK (
jdk-9.0.1_osx-x64_bin.dmg
) à partir d'Oracle ici - Android SDK (
sdk-tools-darwin-3859397.zip
) à partir de Google ici.
Après la configuration de la PATH
variable, j'ai essayé de courir sdkmanager
, qui a remplacé le android
de commande pour la gestion des composants SDK. Toutefois, il a omis, 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
Ici est la version de 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)
Personne ne sait comment résoudre ce problème sans revenir à Java 8?
Questions Liées
- Impossible d'installer android-sdk
- Ce post posé une question similaire. Cependant, le post est fermé et la seule réponse suggère de revenir à Java 8.
- Je me demandais: quel est le but de le faire?
- Essayer de nouvelles fonctionnalités de Java 9, mais en même temps, le développement des applications Android, et vous voulez juste un JDK dans le système.
- Liés réponse n'est pas Android SDK spécifique. Il n'a pas de point quel script à modifier, et où les modifier. Veuillez noter que pas tout le monde sait script shell, et il aide à résoudre le problème rapidement, même pour les gens qui savent. Voulez-vous savoir si un script n'est pas écrite par vous pour résoudre un simple problème de configuration, tandis qu'une solution de travail est sorti il y a déjà testé par quelqu'un?
- Sur cette note, j'ai voté pour rouvrir stackoverflow.com/questions/46402772/... de même que les commentaires souligné.
- Merci de ne pas supprimer ce jusqu'à ce que stackoverflow.com/q/46402772/142239 est ré-ouvert, et je copie ma réponse. Je n'ai pas de sauvegarde de mon StackOverflow postes. Merci!
- J'étais avec java dernière installé, de le rétrograder pour java8 dans les variables d'env et beau travail
- aucune des solutions n'a fonctionné pour moi. fallait revenir à java 8
Vous devez vous connecter pour publier un commentaire.
Avec l'aide de cette réponse, j'ai réussi à résoudre le problème.
Nous allons appliquer un correctif dans
sdkmanager
. C'est un script shell. Il est situé à$android_sdk/tools/bin
, où$android_sdk
est l'endroit où vous avez décompressé le SDK Android.sdkmanager
dans votre éditeur de texte favori.Recherchez la ligne qui définit la
DEFAULT_JVM_OPTS
variable. Dans mon exemplaire, c'est à la ligne 31:Ajouter les options suivantes à la variable:
-XX:+IgnoreUnrecognizedVMOptions --add-modules java.se.ee
. S'il vous plaît prêter attention aux guillemets. Dans mon exemplaire, la ligne devient:Voici le résultat:
Hola! Il fonctionne!
-- Edit: 2017-11-07 --
Veuillez noter que vous devrez peut-être appliquer le correctif ci-dessus à nouveau après l'exécution de
sdkmanager --update
, depuis lesdkmanager
script shell peut être remplacé si letools
paquet est mis à jour.Réponses
--add-modules java.se.ee
devrait être considéré comme une solution de contournement temporaire. La proposition de baisse de la java.xml.lier le module Java SE et le JDK est dans le projet de formulaire ici: bugs.openjdk.java.net/browse/JDK-8189188JAVA_OPTS
variable d'environnement,export JAVA_OPTS='-XX:+IgnoreUnrecognizedVMOptions --add-modules java.se.ee'
, plutôt que de modifier le source SDK fichiers?set DEFAULT_JVM_OPTS="-Dcom.android.sdklib.toolsdir=%~dp0.." -XX:+IgnoreUnrecognizedVMOptions --add-modules java.se.ee
pour obtenir lecom.android.sdklib.tool.SdkManagerCli
classe pour s'exécuter correctementJAVA_OPTS
est le plus simple. Notez que sur Windows, vous avez besoin de le mettre sans guillemets:set JAVA_OPTS=--add-modules java.se.ee
-XX:+IgnoreUnrecognizedVMOptions --add-modules java.se.ee
ou `--ajouter des modules en java.xml.lier ne fonctionne pas avec Java 11 sur Mac OS. Comment puis-je corriger cela sans installer une autre version de Java?Vous pouvez définir sdkmanager options avec SDKMANAGER_OPTS.
Exemple:
set SDKMANAGER_OPTS=--add-modules java.se.ee
Pour Windows, si rien ne fonctionne alors essayez ceci:
Ouvrir
sdkmanager.bat
avec le bloc-notes.Recherchez la ligne suivante:
%JAVA_EXE%" %DEFAULT_JVM_OPTS% %JAVA_OPTS% %SDKMANAGER_OPTS%
Ajouter
--add-modules java.xml.bind
De la modification de la ligne devrait ressembler à ceci:
%JAVA_EXE%" %DEFAULT_JVM_OPTS% --add-modules java.xml.bind %JAVA_OPTS% %SDKMANAGER_OPTS%
Comme nous pouvons le lire sur les commentaires précédents cette erreur se produit parce que l'actuelle version du SDK est incompatible avec les plus récentes versions de Java: 9 et 10.
Donc, pour le résoudre, vous pouvez revenir à votre version de java pour Java 8, ou comme une solution de contournement, vous pouvez les exportations de l'option suivante dans votre terminal:
Linux:
Windows:
Cela va résoudre cette erreur pour la
sdkmanager
Et à faire enregistrées de façon permanente, vous pouvez exporter les JAVA_OPTS dans votre fichier de profil sur linux (
.zshrc
,.bashrc
et etc.) ou les ajouter en tant que variable d'environnement de façon permanente sur Windows.ps. Cela ne fonctionne pas pour le Java 11+, qui n'a pas de Java EE des modules. Pour que cette option est une bonne idée, de le rétrograder votre version de Java ou d'attendre un Flottement mise à jour.
Ref: JDK 11: Fin de la route pour Java EE des modules
--add-modules java.xml.bind
au lieu de--add-modules java.se.ee
J'ai eu un moment difficile de trouver cette solution juste d'ajouter le travail sdkmanager.chauve-souris
set CLASSPATH=%APP_HOME%\lib\sdklib-25.3.1.jar
Android Outils sont encore incompatibles avec le JDK 9 ou 10. Vous devez installer le JDK 8 ou, si vous avez besoin de plusieurs versions de Java assurez-vous que l'ensemble du système de base Java points pour un JDK 8.
Plus de détails ici: Comment faire pour configurer l'Unité 2017.4 pour cible Android et éviter l'accumulation des échecs sur OSX?
Quand avoir java 11 dans le système, les solutions ne sont pas valides.
Ce
-XX:+IgnoreUnrecognizedVMOptions --add-modules java.se.ee or
--ajouter des modules java.xml.lier ne fonctionne pas avec Java 11 sur Mac OS.Pour cette raison que vous avez à faire un downgrade de la version java vers la version 8 de ici: http://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html
Liste des versions de Java installées
Java 11
Java 1.8
Ensuite, allez à
et
J'ai été en mesure de résoudre le problème à l'aide d'un montage sdkmanager.fichier bat en le forçant à utiliser le Java embarqué à l'intérieur de l'Android Studio lui-Même, j'imagine qu'utilise l'OpenJDK 8. Voici la édités sdkmanager j'ai Utilisé :
Ici, j'ai utilisé une variable d'environnement ANDROID_STUDIO_JAVA_HOME qui en fait des points pour le JRE intégré dans android studio par exemple: ../android_studio/jre
Cela a aussi un repli à JAVA_HOME si ANDROID_STUDIO_JAVA_HOME n'est pas définie.
https://adoptopenjdk.net prend actuellement en charge toutes les distributions de JDK depuis la version 8 et suivantes.
Par exemple https://adoptopenjdk.net/releases.html#x64_win
Voici un exemple de la façon dont j'ai été en mesure d'utiliser la version de JDK 8 avec sdkmanager et beaucoup plus: https://travis-ci.com/mmcc007/screenshots/builds/109365628
Pour JDK 9 (et je pense que 10, et éventuellement 11, mais pas 12 et au-delà), les éléments suivants doivent travailler pour obtenir sdkmanager de travail: