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
Recibo este error arriba cuando ejecuto flutter doctor --android-licenses. ¿Alguien sabe por qué sucede esto y cómo puedo solucionarlo? Ya lo estoy ejecutando en la consola flutter.
Instalar las herramientas de línea de comandos de Android SDK desde Android SDK Manager hizo el trabajo por mí.
Alternativa al paso n.º 1: WINDOWS: Archivo > Configuración (Ctrl+Alt+S) / MAC: Android Studio > Preferencias
Esta solución funciona para Windows , Linux y Mac OS X.
Si tiene un problema a pesar de los pasos anteriores, puede intentar actualizar su sistema a JDK 8. La documentación oficial de actualización a JDK 8 está disponible aquí .
Parece que está recibiendo una excepción de JDK, sucede cuando no tiene configurado JAVA_HOME en las variables de su sistema O casi ha configurado el JDK pero en la carpeta incorrecta O está intentando ejecutar SDK Manager (que le permite aceptar el Licencias de Android) con el JDK incorrecto.
En caso de JDK 9 o superior:
En realidad, Android SDK Manager solo funciona con Gradle compilado en la versión de JDK 8 para el desarrollo de Android , por lo tanto, si ya tiene una versión de JDK más reciente configurada en las variables del sistema, considere cambiarla a la versión 8 de JDK.
Esta versión funciona bien para mí: https://www.oracle.com/java/technologies/javase/javase-jdk8-downloads.html
En caso de JDK 8 ya instalado
Si extrajo manualmente la carpeta JDK a un directorio, tal vez lo haya configurado como "incorrecto". Quiero decir: señaló el camino equivocado a la carpeta bin Java, pero aún funciona. Debe configurar JAVA_HOME como la raíz de JDK, ejemplo: en la carpeta comprimida de JDK, debe extraerlo y señalar la variable del sistema en la carpeta descomprimida, no directamente en el directorio bin, debe señalar JAVA_HOME como una variable del sistema y declarar la carpeta bin como ejecutable.
Ejemplos:
linux
En su archivo de configuración de shell:
export JAVA_HOME="/home/user/jdk1.8.0_261" export PATH="$PATH:$JAVA_HOME/bin"
ventanas
En su administrador de variables de entorno:
Establecer una nueva VARIABLE DEL SISTEMA llamada JAVA_HOME
Luego, edite la variable PATH y agréguele un nuevo registro:
%JAVA_HOME%\bin
En realidad, no sé realmente cómo administrar JDK en MacOS, si ese es su sistema operativo, lo siento :(
¡Espero eso ayude!
en linux
Android SDK
solo funciona con JDK 8
, así que desinstale su versión actual de JDK
.
Pase el comando y presione la pestaña para autocompletar, elimine todas las cosas que le muestran que comienzan con openjdk-
sudo apt remove openjdk-
y ahora instale JDK 8
sudo apt install openjdk-8-jdk
Recomiendo borrar la configuración de android-studio-dir y android-sdk, y dejar que flutter detecte automáticamente su ruta: Esto funciona para mí.
flutter config --android-studio-dir="" flutter config --android-sdk=""
Mi solución fue: tenía instalado Android SDK Build-Tools, Android Emulator y Android SDK Platform-Tools. También tenía la variable JAVA_HOME
en las variables de entorno.
Así que decidí desinstalar Android SDK Build-Tools, Android Emulator y Android SDK Platform-Tools e instalarlos nuevamente. Además, eliminé la variable JAVA_HOME
. Y después de estas operaciones ejecuto flutter doctor --android-licenses
en la terminal. Y de alguna manera funcionó.
en primer lugar, debe saber que flutter funciona en jdk 8, por lo que si tiene otras versiones instaladas, debe purgarlas para eliminar completamente otras versiones
NOTA: esto es de acuerdo a mi caso Ubuntu 20.04, ESTO ES DE ACUERDO A MI SITUACION NO SE GARANTIZA QUE FUNCIONE PARA USTED
si tiene jdk 11, para desinstalar use uno de los dos comandos dependiendo del que haya instalado o puede ejecutar ambos si no sabe cuál de ellos está instalado en su máquina.
sudo apt purge openjdk-11-jre-headless sudo apt purge openjdk-11-jre
si es cualquier otra versión, reemplace 11 con ese número. si usa el jdk predeterminado, para desinstalarlo use el siguiente comando
sudo apt purge default-jre
para asegurarnos de eliminar todo lo relacionado con Java, ejecute este comando
sudo apt auto remove
NOTA: puede ejecutar todos los comandos anteriores solo para estar más seguro de eliminar por completo todo lo relacionado con Java
para verificar que hemos eliminado todo ejecuta
java -v
si ve el error a continuación o la versión de java, entonces java no se ha desinstalado
Unrecognized option: --version Error: Could not create the Java Virtual Machine. Error: A fatal exception has occurred. Program will exit.
pero si recibe una respuesta de que no se encontró java y hay una sugerencia de instalación de java, significa que java se ha desinstalado
ahora necesitamos instalar jdk 8 ejecutar este comando
sudo apt install openjdk-8-jre
si todo va bien, reinicie su máquina y ejecute flutter doctor
y siga las instrucciones para aceptar las licencias
Saludos, espero que este post te sea de ayuda
Las soluciones anteriores funcionan totalmente, pero hay una solución que veo menos veces de lo que esperaría: sdkman => https://sdkman.io/
con una herramienta de este tipo instalada, cambiar la versión de Java es tan rápido como (adopte Java 8 como ejemplo):
❯ sdk install java 8.0.282.hs-adpt ❯ sdk use java 8.0.282.hs-adpt
Para mí, en Windows 10, la respuesta fue simplemente eliminar la variable de entorno JAVA_HOME.
Probablemente no sea una buena idea si es un desarrollador de Java o confía en algún software de Java para hacer su trabajo, pero si es un desarrollador que no funciona en el espacio de Java y solo está obteniendo Comencé con Flutter como yo, luego ingrese a las variables de entorno del sistema y elimine esa. flutter doctor --android-licenses
funcionó como se supone que debe hacerlo después de que hice eso.
Necesita JDK 8 ya que los archivos necesarios se eliminaron en versiones posteriores.
Una vez instalado, puede cambiar entre versiones usando
sudo update-alternatives --config java
luego seleccione la opción para JDK 8. Esto también le mostrará la ubicación de su instalación de JDK 8 que necesitará para:
export JAVA_HOME="/usr/lib/jvm/java-8-openjdk-amd64/jre/" PATH=$PATH:$JAVA_HOME/bin
Tuve el mismo problema, lo resolví instalando las herramientas de línea de comandos de Android Studio
haga clic en archivo, configuración, luego en la barra de búsqueda, escriba sdk y haga clic en sdk de Android
Luego haga clic en herramientas sdk, marque la casilla de herramientas de línea de comandos de Android, haga clic en aplicar para permitir la descarga. luego intente ejecutar flutter doctor --android-licenses
nuevamente en su cmd, se le pedirá que acepte las licencias
Soy un usuario de Mac y resuelvo este problema.
Esta respuesta también ayuda a los usuarios de Windows y Linux a resolver el problema a partir de los comentarios de los usuarios.
Al principio, esto es lo que conocí por el tema.
$ doctor aleteo -v
Y el siguiente comando no funciona para mi situación.
$ flutter doctor --licencias de Android
La forma de solucionar esto es instalar
Herramientas de línea de comandos del SDK de Android . ¿Y cómo?
Solo necesita hacerlo siguiendo los siguientes dos pasos.
Paso 1. Abra el Administrador de SDK
Menú superior -> Herramientas -> Administrador de SDK
Paso 2. Instalar herramientas de línea de comandos
Después de que Android Studio finalice la instalación, puede hacer lo siguiente.
$ flutter doctor --licencias de Android
Después de decir que sí muchas veces, se han firmado todas las licencias de Android.
Verifique nuevamente con flutter doctor.
Puede ver que se aceptan todas las licencias de Android.
¡Felicitaciones, ha completado esta tarea!