React Native error: “Não foi possível determinar a versão java de '9.0.1'.”


108

Estou trabalhando no MacOS e apenas começando react-native.

Uma das primeiras etapas para começar é executar: react-native run-androidou react-native run-ios. Mas estou recebendo este erro:

react-native run-android

Resultado:

Scanning folders for symlinks in /Users/ric/myprojs/albums/node_modules (6ms)
Starting JS server...
Building and installing the app on the device (cd android && ./gradlew installDebug)...

FAILURE: Build failed with an exception.

* What went wrong:
Could not determine java version from '9.0.1'.

* Try:
Run with --stacktrace option to get the stack trace. Run with --info or --debug option to get more log output.
Could not install the app on the device, read the error above for details.
Make sure you have an Android emulator running or a device connected and have
set up your Android development environment:
https://facebook.github.io/react-native/docs/android-setup.html

Isso é o que eu recebo quando corro java --version:

java --version

Resultado:

java 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)
mbp:albums ric$ java --version
java 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)

Editar

Minha versão javac:

javac --version

Resultado:

javac 9.0.1

Alguma ideia de como consertar isso?


2
você pode correr javac -versiontambém no terminal, por favor
bennygenel

1
Achei que esse problema é um pouco antigo, mas pode estar relacionado à versão java ou gradle.
bennygenel,

Respostas:


205

Em seu PROJECT_PATH/android/gradle/wrapper/gradle-wrapper.propertiesarquivo, atualize seudistributionUrl para o seguinte:

distributionUrl=https\://services.gradle.org/distributions/gradle-5.0-all.zip

Consulte a documentação de distribuições Gradle relacionadas


4
deve estar em app-folder / android / gradle / wrapper / gradle-wrapper.properties
Muhammad Adeel

6
Depois de alterar a versão do Gradle de acordo com sua sugestão, recebo outro erro: Não foi possível inicializar a classe com.android.sdklib.repository.AndroidSdkHandler
leMale

7
Por que isso ajuda? React-Native usa gradle-2.14.1 por padrão quando você inicializa um novo aplicativo, então por que precisamos de um diferente?
Waltari

11
obter este erro após adicionar este> javax / xml / bind / annotation / XmlSchema
Milon

15
Você precisa usar a versão mais recente do Gradle. Por exemplo, para suportar Java 11, você pode usargradle-4.10-all.zip
Andrey Kolpakov


15

Certifique-se de ter JDK8instalado e definidoJAVA_HOME emJDK8

por exemplo:

export JAVA_HOME=/Library/Java/JavaVirtualMachines/jdk1.8.0_151.jdk/Contents/Home

ou use .bash_*arquivos para definir esta variável


1
Eu tinha isso no meu .zshrc no mac: alterá- export JAVA_HOME=$(/usr/libexec/java_home) lo para export JAVA_HOME=$(/usr/libexec/java_home -v 1.8)escolhe a versão instalada mais recente do Java v8 e corrigiu o mesmo problema.
Greg Haygood

8
vi ~/.bash_profile

Em seguida, adicione as seguintes linhas:

export ANDROID_HOME=$HOME/Library/Android/sdk
export PATH=$PATH:$ANDROID_HOME/tools
export PATH=$PATH:$ANDROID_HOME/tools/bin
export PATH=$PATH:$ANDROID_HOME/platform-tools
export JAVA_HOME=$(/usr/libexec/java_home -v 1.8)

Agora forneça o arquivo para fazer as alterações acima efetivas no shell atual:

source ~/.bash_profile 

1
Esta última linha export JAVA_HOME=$(/usr/libexec/java_home -v 1.8)resolveu as coisas para mim - Obrigado!
JohnSalzarulo

7

No MacOS, executei os seguintes comandos:

brew cask uninstall java
brew tap caskroom/versions
brew cask install java8 "or just brew cask install java to install latest version"

3

Eu estava recebendo este erro, mas para uma versão mais recente do Java - 10.0.2.

Para corrigir meu erro, segui as etapas mencionadas por @Blacktovicheneste problema do Github: https://github.com/facebook/react-native/issues/17688

Quando abri a androidpasta dentro do meu projeto por meio do Android Studio, fui questionado Android Gradle plugin update recommended. Na época, eu estava seguindo um tutorial um pouco desatualizado que me dizia para clicarDon't remind me again for this project .

No entanto, conforme @Blacktovicherecomendado no problema do github relacionado acima, às vezes é necessário atualizar o plug-in do Gradle. Depois de atualizar, também tive que clicarInstall Build Tools 27... and sync project (não lembro a versão exata).

Depois de seguir essas etapas, consegui executar com êxito meu aplicativo nativo Rea no emulador do Android Studio.

Espero que isso ajude alguém!


1

---- Dezembro de 2018 --- preste atenção --- React Native não funciona com versões de Java superiores a 8, então você precisa desinstalar sua 9.0.1versão. Para fazer isso, execute os seguintes comandos:

cd /Library/Java/JavaVirtualMachines/
ls -l

Identifique a pasta que contém sua versão Java e remova-a

sudo rm -rf jdk.x.x_xxx.jdk

Depois disso, você pode baixar e instalar o java 8 do oracle novamente. Consulte a página de download do jdk8


"React Native não funciona com versões Java superiores a 8" absolutamente incorreto. Tenho uma versão em execução no JDK 13 agora.
Ian Kemp

Minha resposta é de DEZ 2018. Obtenha o React Native de 2018, execute em um JDK 13 e, se funcionar, venha aqui e atualize sua resposta.
Guilherme Ferreira

0

Se você estiver usando o Windows; Certifique-se de adicionar seu caminho jdk à variável de caminho do ambiente. Em seguida, abra a pasta android do seu projeto nativo Rea no Android Studio. Ele irá atualizar as coisas necessárias para você automaticamente.


0

Normalmente recebo este erro quando me esqueço de construir o projeto usando o Android Studio. Uma simples sincronização e atualização do Gradle farão o trabalho.


0

Eu resolvo isso fazendo o downgrade do meu JDK para 8.


0

No Ubuntu, você deve executar estas linhas de comando no terminal:

sudo add-apt-repository ppa:webupd8team/java
sudo apt-get update
sudo apt install oracle-java8-installer
sudo apt install oracle-java8-set-default
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.