Descargué e instalé:
- JDK (
jdk-9.0.1_osx-x64_bin.dmg
) de Oracle aquí - SDK de Android (
sdk-tools-darwin-3859397.zip
) de Google aquí .
Después de configurar la PATH
variable, intenté ejecutar sdkmanager
, lo que reemplazó el android
comando para administrar los componentes del SDK. Sin embargo, falló como se muestra aquí:
$ 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
Aquí está la versión 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)
¿Alguien sabe cómo solucionarlo sin volver a Java 8?
preguntas relacionadas
- No se pudo instalar android-sdk
- Esta publicación hizo una pregunta similar. Sin embargo, la publicación está cerrada y la única respuesta sugiere volver a Java 8.
java
android
android-sdk-tools
java-9
android-sdk-manager
Siu Ching Pong -Asuka Kenji-
fuente
fuente
Respuestas:
Con la ayuda de esta respuesta , resolví el problema con éxito.
Vamos a aplicar una solución en
sdkmanager
. Es un script de shell. Se encuentra en$android_sdk/tools/bin
, donde$android_sdk
es donde descomprimiste el SDK de Android.sdkmanager
en tu editor favorito.Busque la línea que establece la
DEFAULT_JVM_OPTS
variable. En mi copia, está en la línea 31:Añade las siguientes opciones a la variable:
-XX:+IgnoreUnrecognizedVMOptions --add-modules java.se.ee
. Preste atención a las cotizaciones. En mi copia, la línea se convierte en:Aquí está el resultado:
¡Hola! ¡Funciona!
- Edición: 2017-11-07 -
Tenga en cuenta que es posible que deba volver a aplicar la corrección anterior después de ejecutar
sdkmanager --update
, ya que elsdkmanager
script de shell puede anularse sitools
se actualiza el paquete.Respuestas relacionadas
fuente
--add-modules java.se.ee
debería considerarse una solución temporal. La propuesta para eliminar el módulo java.xml.bind de Java SE y el JDK está en forma de borrador aquí: bugs.openjdk.java.net/browse/JDK-8189188JAVA_OPTS
variable de entornoexport JAVA_OPTS='-XX:+IgnoreUnrecognizedVMOptions --add-modules java.se.ee'
, en lugar de parchear los archivos fuente del SDK?set DEFAULT_JVM_OPTS="-Dcom.android.sdklib.toolsdir=%~dp0.." -XX:+IgnoreUnrecognizedVMOptions --add-modules java.se.ee
que lacom.android.sdklib.tool.SdkManagerCli
clase se ejecutara correctamente-XX:+IgnoreUnrecognizedVMOptions --add-modules java.se.ee
o `--add-modules java.xml.bind no funcionan con Java 11 en Mac OS. ¿Cómo puedo solucionarlo sin instalar otra versión de Java?Puede configurar las opciones de sdkmanager con SDKMANAGER_OPTS.
Ejemplo:
fuente
set SDKMANAGER_OPTS=--add-modules java.se.ee
La respuesta aceptada está desactualizada en febrero de 2019. Aquí hay una respuesta que funcionará hasta que se
sdkmanager
migre a una versión más nueva de Java. Pero para entonces, ya no tendrás este problema.fuente
set JAVA_HOME="...\android-studio\current\jre"
me ayuda en Windows 10 mientras que todas las demás respuestas no lo hicieronset JAVA_HOME="C:\Program Files\Android\Android Studio\jre"
funcionó para mí en Windows 10. Descubra su ruta de Android Studio. He configurado Java 11 en mi JAVA_HOME originalAl tener java 11 en el sistema, las soluciones proporcionadas no son válidas.
Este
-XX:+IgnoreUnrecognizedVMOptions --add-modules java.se.ee or
--add-modules java.xml.bind no funciona con Java 11 en Mac OS.Por esa razón, debe degradar la versión de Java a la versión 8 desde aquí: http://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html
Lista de versiones de Java instaladas
Java 11
Java 1.8
Luego ve a
y
fuente
bash: /usr/libexec/java_home: file not found
en mi instalación.Para Windows, si nada funciona, intente esto:
Abrir
sdkmanager.bat
con el Bloc de notas.Busque la siguiente línea:
%JAVA_EXE%" %DEFAULT_JVM_OPTS% %JAVA_OPTS% %SDKMANAGER_OPTS%
Añadir
--add-modules java.xml.bind
La línea modificada debería verse así:
%JAVA_EXE%" %DEFAULT_JVM_OPTS% --add-modules java.xml.bind %JAVA_OPTS% %SDKMANAGER_OPTS%
fuente
Como leemos en los comentarios anteriores, este error se produce porque la versión actual del SDK es incompatible con las versiones más recientes de Java: 9 y 10.
Entonces, para resolverlo, puede degradar su versión de Java a Java 8 o, como solución, puede exportar la siguiente opción en su terminal:
Linux:
Ventanas :
Esto solucionará este error para el
sdkmanager
Y para que se guarde de forma permanente, puede exportar JAVA_OPTS en su archivo de perfil en Linux (
.zshrc
,.bashrc
etc.) o agregar como variable de entorno permanentemente en Windows.PD. Esto no funciona para Java 11+, que no tiene módulos Java EE. Para esta opción es una buena idea, degradar su versión de Java o esperar una actualización de Flutter .
Ref: JDK 11: Fin del camino para los módulos Java EE
fuente
--add-modules java.xml.bind
lugar de--add-modules java.se.ee
Actualización 2019-10:
Como se indica en el seguimiento de problemas , Google ha estado trabajando en una nueva versión de herramientas SDK que se ejecuta en las JVM actuales (9+).
Puede descargar y utilizar las nuevas herramientas de línea de comandos del SDK de Android (1.0.0) dentro de Android Studio o descargándolas manualmente desde los servidores de Google:
Para obtener las últimas versiones, consulte las URL dentro de repository.xml .
Si descomprime manualmente las herramientas de la línea de comandos, asegúrese de colocarlas en una subcarpeta dentro de su
$ANDROID_HOME
(por ejemplo$ANDROID_HOME/cmdline-tools/...
).fuente
Como algunas personas han mencionado antes, esto podría ser un problema más simple que tiene que ver con una instalación de Java que tiene prioridad sobre la otra.
En mi caso, Java 8 se vio eclipsado por un java más nuevo predeterminado.
Instalé java 8:
Luego actualicé el java instalado para que sea el nuevo predeterminado:
Por lo que seleccioné el número de identificación de Java 8.
Después de seguir estos pasos (bastante simples), pude ejecutar sdkmanager sin errores.
¡Espero que esto ayude a alguien!
fuente
Las herramientas de Android siguen siendo incompatibles con JDK 9 o 10. Debe instalar JDK 8 o, si necesita varias versiones de Java, asegúrese de que el inicio de Java en todo el sistema apunta a un JDK 8.
Más detalles aquí: ¿Cómo configurar Unity 2017.4 para apuntar a Android y evitar fallas de compilación en OSX?
fuente
Me costó mucho descubrir esta solución simplemente agregando el sdkmanager.bat que funciona
fuente
set CLASSPATH=%APP_HOME%\lib\sdklib-25.3.1.jar
Pude resolver el problema usando un archivo sdkmanager.bat editado forzando a usar Java incrustado dentro de Android Studio, que supongo que usa OpenJDK 8. Aquí está el sdkmanager editado que usé:
Aquí utilicé una variable de entorno ANDROID_STUDIO_JAVA_HOME que en realidad apunta al JRE incrustado en el estudio de Android, por ejemplo: ../android_studio/jre
Esto también tiene una alternativa a JAVA_HOME si ANDROID_STUDIO_JAVA_HOME no está configurado.
fuente
Breve adición a lo anterior para openJDK 11 con herramientas sdk de Android antes de actualizar a la última versión.
Las soluciones anteriores no funcionaron para mí
Para que esto funcione, he instalado jaxb-ri (implementación de referencia) del repositorio de maven.
La información se proporcionó https://github.com/javaee/jaxb-v2 y enlaces a https://repo1.maven.org/maven2/com/sun/xml/bind/jaxb-ri/2.3.2/jaxb -ri-2.3.2.zip
Esta descarga incluye una implementación de tiempo de ejecución independiente en la carpeta mod.
Copié la carpeta mod en $ android_sdk \ tools \ lib \ y agregué lo siguiente a 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;
Así que finalmente se ve así:
Tal vez me perdí una biblioteca debido a que aparecieron algunos errores menores. Pero sdkmanager.bat --update o --list se está ejecutando ahora.
fuente
Esto es lo que hice en Ubuntu 18.04 (cualquier Linux servirá):
fuente
La única solución que funciona para mí es usar el java enviado con el estudio de Android.
establezca JAVA_HOME en
/Applications/Android\ Studio.app/Contents/jre/jdk/Contents/Home
en
.bashrc
set JAVA_HOME="/Applications/Android\ Studio.app/Contents/jre/jdk/Contents/Home"
Si está usando
fish
shel, coloque esto en~/.config/fish/config.fish
set -gx JAVA_HOME /Applications/Android\ Studio.app/Contents/jre/jdk/Contents/Home
(Esto es para mac, pero estoy seguro de que debería funcionar con Linux y Windows configurando la ruta correcta)
fuente
JDK 13.0.1, SDK de Android 29, Windows 10
Básicamente probé todo, pero la solución más efectiva y única que funcionó para mí fue degradar a jdk 1.8. No sé por qué, estamos a principios de 2020 y tengo que cambiar a la versión jdk de 1 año frente a la última versión de flutter. Tal vez el problema esté en la versión de Windows, porque jdk 13.0.1 funcionó para mí en macOS 10.15.2. Espero que esta solución funcione.
Enlace de descarga (JDK 1.8.0): https://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html
fuente
Defina directorios de inicio de diferentes versiones de JDK en su .bashrc o .zshrc:
En primer lugar, utilice la versión 8 de JDK. Coloque esta línea en la parte superior del
sdkmanager
archivo:Vuelva a la versión 14 de JDK. Coloque esta línea al final del
sdkmanager
archivo:fuente
Esta es la respuesta para que esto funcione para Java 11 y versiones posteriores, ya que se eliminaron todas las API de JAXB.
Descargue Jakarta XML Binding , específicamente este archivo zip . Solo necesita los 3 archivos dentro de la carpeta mod, es decir, jakarta.activation.jar, jakarta.xml.bind-api.jar y jakarta.xml.bind-api.jar y puede tirar el resto.
Mueva estos archivos a la carpeta APP_HOME / lib. Creé una subcarpeta jaxb dentro para esto. Entonces, en mi sistema macOS, esto era: $ HOME / Library / Android / sdk / tools / lib / jaxb
Ahora abra sdkmanager usando su editor de texto favorito y en CLASSPATH = agregue lo siguiente al principio:
Así que terminó pareciendo:
Y eso es todo, debería resolver el problema.
Hice estos pasos porque
flutter doctor --android-licenses
me estaba dando problemas. Y esto lo arregló.fuente
https://adoptopenjdk.net actualmente admite todas las distribuciones de JDK desde la versión 8 en adelante. Por ejemplo https://adoptopenjdk.net/releases.html#x64_win
Aquí hay un ejemplo de cómo pude usar la versión 8 de JDK con sdkmanager y mucho más: https://travis-ci.com/mmcc007/screenshots/builds/109365628
Para JDK 9 (y creo que 10, y posiblemente 11, pero no 12 y más), lo siguiente debería funcionar para que sdkmanager funcione:
fuente
Otra posible solución a este error es verificar tu versión de Java, tal vez puedas resolverlo descargando este jdk oracle-jdk-8 , este fue mi error: P
fuente
Solo necesita instalar los archivos jaxb har e incluirlos en la ruta de clases. esto funciona en java 11 a 12 más reciente.
Para aquellos que están buscando la solución, hice algo de esencia en github, espero que esto ayude. y los enlaces también se proporcionan.
https://gist.github.com/Try-Parser/b7106d941cc9b1c9e7b4c7443a7c3540
fuente
Descargo Java 8 SDK
cmd-> flutter doctor --install -licenses
y despuésfuente
Aparentemente, si usa una versión de "commandlinetools" superior a 3.6.0, puede usar JDK11 + para instalar los componentes del SDK de Android.
Están disponibles aquí: https://developer.android.com/studio#command-tools
Rastreador oficial de problemas que dice que está solucionado: https://issuetracker.google.com/issues/122210344#comment11
fuente
Es muy simple, simplemente exporta la
JAVA_HOME
variable de entorno, configurada en la ruta de tu instalación de JDK.Instalé Java manualmente en Ubuntu, por lo que para mí esto se ve así:
Y asegúrate de que también exista en tu camino ...
fuente