Eu baixei e instalei:
- JDK (
jdk-9.0.1_osx-x64_bin.dmg
) da Oracle aqui - SDK Android (
sdk-tools-darwin-3859397.zip
) do Google aqui .
Depois de configurar a PATH
variável, tentei executar sdkmanager
, que substituiu o android
comando de gerenciamento de componentes do SDK. No entanto, ele falhou conforme mostrado aqui:
$ 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
Aqui está a versão 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)
Alguém sabe como consertar sem voltar ao Java 8?
Perguntas relacionadas
- Falha ao instalar android-sdk
- Esta postagem fez uma pergunta semelhante. Porém, a postagem está fechada e a única resposta sugere voltar ao Java 8.
java
android
android-sdk-tools
java-9
android-sdk-manager
Siu Ching Pong -Asuka Kenji-
fonte
fonte
Respostas:
Com a ajuda desta resposta , resolvi o problema com sucesso.
Vamos aplicar uma correção em
sdkmanager
. É um script de shell. Ele está localizado em$android_sdk/tools/bin
, onde$android_sdk
é onde você descompactou o Android SDK.sdkmanager
em seu editor favorito.Localize a linha que define a
DEFAULT_JVM_OPTS
variável. Em minha cópia, está na linha 31:Acrescente as seguintes opções para a variável:
-XX:+IgnoreUnrecognizedVMOptions --add-modules java.se.ee
. Por favor, preste atenção às citações. Na minha cópia, a linha se torna:Aqui está o resultado:
Hola! Funciona!
- Editar: 07-11-2017 -
Observe que você pode precisar aplicar a correção acima novamente após a execução
sdkmanager --update
, uma vez que osdkmanager
script de shell pode ser substituído se otools
pacote for atualizado.Respostas Relacionadas
fonte
--add-modules java.se.ee
deve ser considerada uma solução temporária. A proposta para retirar o módulo java.xml.bind do Java SE e do JDK está em forma de rascunho aqui: bugs.openjdk.java.net/browse/JDK-8189188JAVA_OPTS
variável de ambienteexport JAVA_OPTS='-XX:+IgnoreUnrecognizedVMOptions --add-modules java.se.ee'
, em vez de corrigir os arquivos de origem do SDK?set DEFAULT_JVM_OPTS="-Dcom.android.sdklib.toolsdir=%~dp0.." -XX:+IgnoreUnrecognizedVMOptions --add-modules java.se.ee
para fazer acom.android.sdklib.tool.SdkManagerCli
classe funcionar corretamente-XX:+IgnoreUnrecognizedVMOptions --add-modules java.se.ee
ou `--add-modules java.xml.bind não funciona com Java 11 no Mac OS. Como posso consertar sem instalar outra versão do Java?Você pode definir as opções do sdkmanager com SDKMANAGER_OPTS.
Exemplo:
fonte
set SDKMANAGER_OPTS=--add-modules java.se.ee
A resposta aceita está desatualizada em fevereiro de 2019. Esta é uma resposta que funcionará até a
sdkmanager
migração para uma versão mais recente do Java. Mas então, você não terá mais esse problema.fonte
set JAVA_HOME="...\android-studio\current\jre"
me ajuda no Windows 10 enquanto todas as outras respostas nãoset JAVA_HOME="C:\Program Files\Android\Android Studio\jre"
trabalhou para mim no Windows 10. Descubra o caminho do Android Studio. Eu configurei o Java 11 no meu JAVA_HOME originalAo ter java 11 no sistema, as soluções fornecidas não são válidas.
Este
-XX:+IgnoreUnrecognizedVMOptions --add-modules java.se.ee or
--add-modules java.xml.bind não funciona com Java 11 no Mac OS.Por esse motivo, você deve fazer o downgrade da versão java para a versão 8 aqui: http://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html
Lista as versões Java instaladas
Java 11
Java 1.8
Então vá para
e
fonte
bash: /usr/libexec/java_home: file not found
na minha instalação.Para Windows, se nada funcionar, tente o seguinte:
Abra
sdkmanager.bat
com o Bloco de Notas.Localize a seguinte linha:
%JAVA_EXE%" %DEFAULT_JVM_OPTS% %JAVA_OPTS% %SDKMANAGER_OPTS%
Adicionar
--add-modules java.xml.bind
A linha modificada deve ser semelhante a esta:
%JAVA_EXE%" %DEFAULT_JVM_OPTS% --add-modules java.xml.bind %JAVA_OPTS% %SDKMANAGER_OPTS%
fonte
Conforme lemos nos comentários anteriores, esse erro está ocorrendo porque a versão atual do SDK é incompatível com as versões mais recentes do Java: 9 e 10.
Então, para resolver isso, você pode fazer o downgrade de sua versão do java para o Java 8 ou, como uma solução alternativa, você pode exportar a seguinte opção em seu terminal:
Linux:
Windows :
Isso resolverá este erro para o
sdkmanager
E para salvá-lo permanentemente você pode exportar o JAVA_OPTS em seu arquivo de perfil no linux (
.zshrc
,.bashrc
e etc.) ou adicionar como variável de ambiente permanentemente no Windows.ps. Isso não funciona para o Java 11+, que não tem módulos Java EE. Para esta opção é uma boa idéia, fazer downgrade de sua versão Java ou esperar por uma atualização do Flutter .
Ref: JDK 11: Fim da estrada para módulos Java EE
fonte
--add-modules java.xml.bind
vez de--add-modules java.se.ee
Atualização de 2010-10:
Conforme declarado no rastreador de problemas , o Google está trabalhando em um novo lançamento de ferramentas SDK que roda em JVMs atuais (9+)!
Você pode baixar e usar as novas ferramentas de linha de comando do Android SDK (1.0.0) dentro do Android Studio ou baixando-as manualmente dos servidores do Google:
Para as versões mais recentes, verifique os URLs dentro do repository.xml .
Se você descompactar manualmente as ferramentas de linha de comando, tome o cuidado de colocá-las em uma subpasta dentro de seu
$ANDROID_HOME
(por exemplo$ANDROID_HOME/cmdline-tools/...
).fonte
Como algumas pessoas mencionaram antes, isso pode muito bem ser um problema mais simples, tendo a ver com uma instalação do java tendo precedência sobre a outra.
No meu caso, era o java 8 sendo ofuscado por um java padrão mais recente.
Instalei o java 8:
Então eu atualizei o java instalado para ser o novo padrão:
Por meio do qual selecionei o número de identificação de java 8.
Depois de seguir essas etapas (muito simples), eu poderia simplesmente executar o sdkmanager sem erros.
Espero que isso ajude alguém!
fonte
As ferramentas do Android ainda são incompatíveis com o JDK 9 ou 10. Você precisa instalar o JDK 8 ou, se precisar de várias versões do Java, certifique-se de que a página inicial do Java em todo o sistema aponta para um JDK 8.
Mais detalhes aqui: Como configurar o Unity 2017.4 para direcionar o Android e evitar falhas de compilação no OSX?
fonte
Foi difícil descobrir essa solução apenas adicionando o sdkmanager.bat funcional
fonte
set CLASSPATH=%APP_HOME%\lib\sdklib-25.3.1.jar
Consegui resolver o problema usando um arquivo sdkmanager.bat editado, forçando o uso do Java embutido no próprio Android Studio, que presumo que use o OpenJDK 8. Aqui está o sdkmanager editado que usei:
Aqui, usei uma variável de ambiente ANDROID_STUDIO_JAVA_HOME que na verdade aponta para o JRE embutido no estúdio Android, por exemplo: ../android_studio/jre
Isso também tem um fallback para JAVA_HOME se ANDROID_STUDIO_JAVA_HOME não estiver definido.
fonte
Breve adição ao acima para openJDK 11 com ferramentas SDK do Android antes de atualizar para a versão mais recente.
As soluções acima não funcionaram para mim
Para fazer isso funcionar, instalei o jaxb-ri (implementação de referência) do repositório maven.
As informações foram fornecidas https://github.com/javaee/jaxb-v2 e links para https://repo1.maven.org/maven2/com/sun/xml/bind/jaxb-ri/2.3.2/jaxb -ri-2.3.2.zip
Este download inclui uma implementação de tempo de execução autônomo no mod-Folder.
Copiei a pasta mod para $ android_sdk \ tools \ lib \ e adicionei o seguinte à variável 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;
Então, finalmente parece:
Talvez eu tenha perdido uma lib devido a alguns pequenos erros que apareceram. Mas sdkmanager.bat --update ou --list está rodando agora.
fonte
Isso é o que eu fiz no Ubuntu 18.04 (qualquer Linux fará):
fonte
A única solução que funciona para mim é usar o java que acompanha o Android Studio.
defina o JAVA_HOME para
/Applications/Android\ Studio.app/Contents/jre/jdk/Contents/Home
no
.bashrc
set JAVA_HOME="/Applications/Android\ Studio.app/Contents/jre/jdk/Contents/Home"
Se você estiver usando
fish
shel, coloque isso em~/.config/fish/config.fish
set -gx JAVA_HOME /Applications/Android\ Studio.app/Contents/jre/jdk/Contents/Home
(Isso é para mac, mas tenho certeza que deve funcionar com Linux e Windows, definindo o caminho correto)
fonte
JDK 13.0.1, Android SDK 29, Windows 10
Basicamente, tentei de tudo, mas a solução mais eficaz e apenas uma que funcionou para mim foi fazer o downgrade para o jdk 1.8. Não sei por que, é o início de 2020 e tenho que fazer o downgrade para a versão jdk de 1 ano de idade contra a versão mais recente do flutter. Talvez o problema esteja na versão do Windows, porque o jdk 13.0.1 funcionou para mim no macOS 10.15.2. Espero que esta solução funcione.
Link de download (JDK 1.8.0): https://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html
fonte
Defina diretórios iniciais de diferentes versões do JDK em .bashrc ou .zshrc:
Em primeiro lugar, use o JDK versão 8. Coloque esta linha no topo do
sdkmanager
arquivo:Volte para o JDK versão 14. Coloque esta linha no final do
sdkmanager
arquivo:fonte
Esta é a resposta para fazer isso funcionar para Java 11 e superior, uma vez que todas as APIs JAXB foram removidas.
Baixe Jakarta XML Binding , especificamente este arquivo zip . Você precisa apenas dos 3 arquivos dentro da pasta mod, ou seja, jakarta.activation.jar, jakarta.xml.bind-api.jar e jakarta.xml.bind-api.jar e você pode jogar o resto fora.
Mova esses arquivos para a pasta APP_HOME / lib. Criei uma subpasta jaxb dentro para isso. Portanto, no meu sistema macOS, era: $ HOME / Library / Android / sdk / tools / lib / jaxb
Agora abra o sdkmanager usando seu editor de texto favorito e em CLASSPATH = adicione o seguinte no início:
Então acabou parecendo assim:
E é isso, deve resolver o problema.
Eu fiz essas etapas porque
flutter doctor --android-licenses
estava me dando problemas. E isso resolveu.fonte
https://adoptopenjdk.net atualmente oferece suporte a todas as distribuições do JDK da versão 8 em diante. Por exemplo https://adoptopenjdk.net/releases.html#x64_win
Aqui está um exemplo de como consegui usar o JDK versão 8 com sdkmanager e muito mais: https://travis-ci.com/mmcc007/screenshots/builds/109365628
Para JDK 9 (e eu acho que 10, e possivelmente 11, mas não 12 e além), o seguinte deve funcionar para fazer o sdkmanager funcionar:
fonte
Outra solução possível para esse erro é checar sua versão do Java, talvez você consiga resolver baixando este jdk oracle-jdk-8 , este foi meu erro: P
fonte
Você só precisa instalar os arquivos har jaxb e incluí-los no classpath. isso funciona em java 11 a 12 mais recente.
Para aqueles que estão procurando a correção, fiz algumas sugestões no github, espero que isso ajude. e os links também são fornecidos.
https://gist.github.com/Experimente-Parser/b7106d941cc9b1c9e7b4c7443a7c3540
fonte
Eu faço download do Java 8 SDK
cmd-> flutter doctor --install -licenses
e depoisfonte
Aparentemente, se você usar a versão "commandlinetools" superior a 3.6.0, poderá usar JDK11 + para instalar componentes do Android SDK.
Eles estão disponíveis aqui: https://developer.android.com/studio#command-tools
Rastreador de problemas oficial dizendo que foi corrigido: https://issuetracker.google.com/issues/122210344#comment11
fonte
É muito simples, basta exportar a
JAVA_HOME
variável de ambiente, definida para o caminho de instalação do JDK.Instalei o Java manualmente no Ubuntu e, para mim, isso se parece com:
E certifique-se de que existe no seu caminho também ...
fonte