11
votes

flutter doctor --android-licenses donne une erreur java

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.

0 commentaires

5 Réponses :


2
votes

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=""


1 commentaires

@guccisekspir: Comment il détectera, dois-je exécuter à nouveau Flutter Doctor?



31
votes

L'installation des outils de ligne de commande Android SDK à partir d' Android SDK Manager a fait le travail pour moi.

  1. Ouvrez Outils > Gestionnaire de SDK
  2. À gauche, choisissez Apparence et comportement > Paramètres système > SDK Android
  3. Sélectionnez Outils SDK dans le menu supérieur
  4. Vérifiez les outils de ligne de commande du SDK Android et cliquez sur «Appliquer».

1 commentaires

travaillé ... excellent travail cependant :)



2
votes

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

entrez la description de l'image ici

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!


0 commentaires

3
votes

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-


0 commentaires

4
votes

Installer les outils de ligne de commande du SDK Android à partir d'Android SDK Manager a résolu mon problème.

  1. Ouvrez Outils -> Gestionnaire de SDK
  2. Apparence et comportement> Paramètres système> SDK Android
  3. Sélectionnez Outils SDK dans le menu supérieur. Vérifiez les outils de ligne de commande du SDK Android et cliquez sur `` appliquer ''

0 commentaires