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.sdkmanager.SdkManagerCli.main(SdkManagerCli.java:73) at com.android.sdklib.tool.sdkmanager.SdkManagerCli.main(SdkManagerCli.java:48) Caused by: java.lang.ClassNotFoundException: javax.xml.bind.annotation.XmlSchema at java.base/jdk.internal.loader.BuiltinClassLoader.loadClass(BuiltinClassLoader.java:581) at java.base/jdk.internal.loader.ClassLoaders$AppClassLoader.loadClass(ClassLoaders.java:178) at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:521) ... 5 more I get this error above when running flutter doctor --android-licenses. Does anyone know why this is happening and how I can fix it? I'm already running it on the flutter console.
5 Réponses :
Je recommande d'effacer les paramètres android-studio-dir et android-sdk, et de laisser flutter détecte automatiquement leur chemin à la place: cela fonctionne pour moi.
flutter config --android-studio-dir="" flutter config --android-sdk=""
@guccisekspir: Comment il détectera, dois-je exécuter à nouveau Flutter Doctor?
L'installation des outils de ligne de commande Android SDK à partir d' Android SDK Manager a fait le travail pour moi.
travaillé ... excellent travail cependant :)
Il semble que vous obtenez une exception JDK, cela se produit lorsque vous n'avez pas défini JAVA_HOME sur vos variables système OU que vous avez presque réglé le JDK mais dans le mauvais dossier OU que vous essayez d'exécuter le gestionnaire de SDK (qui vous permet d'accepter le Licences Android) avec le mauvais JDK.
Dans le cas de JDK 9 ou supérieur:
En fait, Android SDK Manager fonctionne uniquement avec Gradle compilé sur la version de JDK 8 pour le développement Android , donc, si vous avez une version JDK la plus récente déjà définie sur des variables système, envisagez de la rétrograder vers la version 8 de JDK.
Cette version fonctionne très bien pour moi: https://www.oracle.com/java/technologies/javase/javase-jdk8-downloads.html
Dans le cas du JDK 8 déjà installé
Si vous avez extrait manuellement le dossier JDK dans un répertoire, peut-être que vous l'avez réglé «incorrect». Je veux dire: vous avez indiqué le mauvais chemin vers le dossier bin Java, mais cela fonctionne toujours. Vous devez définir JAVA_HOME comme racine de JDK, exemple: Dans le dossier zippé JDK, vous devez l'extraire et pointer la variable système dans le dossier décompressé, non directement dans le répertoire bin, vous devez pointer JAVA_HOME comme variable système et déclarez le dossier bin comme exécutable.
Exemples:
Linux
Dans votre fichier de configuration shell:
%JAVA_HOME%\bin
les fenêtres
Dans votre gestionnaire de variables d'environnement:
Définissez une nouvelle VARIABLE SYSTÈME nommée JAVA_HOME
Ensuite, éditez la variable PATH et ajoutez-y un nouveau registre:
export JAVA_HOME="/home/user/jdk1.8.0_261" export PATH="$PATH:$JAVA_HOME/bin"
En fait, je ne sais pas vraiment comment gérer les JDK sous MacOS, si c'est votre OS, désolé :(
J'espère que cela aide!
Sous Linux
Android SDK
ne fonctionne qu'avec JDK 8
alors désinstallez votre version actuelle de JDK
.
Passez la commande et appuyez sur l'onglet pour la saisie semi-automatique, supprimez tout ce qu'il vous montre qui commence par openjdk-
sudo apt install openjdk-8-jdk
et installez maintenant JDK 8
sudo apt remove openjdk-
Installer les outils de ligne de commande du SDK Android à partir d'Android SDK Manager a résolu mon problème.