Error de React Native: "No se pudo determinar la versión de Java desde '9.0.1'".

108

Estoy trabajando en MacOS y estoy empezando react-native.

Uno de los primeros pasos para comenzar es ejecutar: react-native run-androido react-native run-ios. Pero recibo este error:

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

Esto es lo que obtengo cuando 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

Mi versión de javac:

javac --version

Resultado:

javac 9.0.1

Alguna idea de como arreglar esto?

Xar
fuente
2
¿Puedes correr javac -versiontambién en la terminal, por favor
Bennygenel
1
Encontré que este problema es un poco antiguo, pero podría estar relacionado con la versión de Java o Gradle.
bennygenel

Respuestas:

205

En su PROJECT_PATH/android/gradle/wrapper/gradle-wrapper.propertiesarchivo, actualice sudistributionUrl a lo siguiente:

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

Consulte la documentación relacionada con las distribuciones de Gradle

Muhammad Adeel
fuente
4
debe estar en la carpeta de aplicaciones / android / gradle / wrapper / gradle-wrapper.properties
Muhammad Adeel
6
Después de cambiar la versión de Gradle a su sugerencia, me da otro error: No se pudo inicializar la clase com.android.sdklib.repository.AndroidSdkHandler
leMale
7
Sin embargo, ¿por qué esto ayuda? React-Native usa gradle-2.14.1 de forma predeterminada cuando inicia una nueva aplicación, entonces, ¿por qué necesitamos una diferente?
Waltari
11
obteniendo este error después de agregar esto> javax / xml / bind / annotation / XmlSchema
Milon
15
Debe utilizar la última versión de Gradle. Por ejemplo, para admitir Java 11, puede usargradle-4.10-all.zip
Andrey Kolpakov
15

Asegúrese de que ha JDK8instalado y luego fijar JAVA_HOMEenJDK8

por ejemplo:

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

o use .bash_*archivos para establecer esta variable

bobu
fuente
1
Tenía esto en mi .zshrc en Mac: export JAVA_HOME=$(/usr/libexec/java_home) Si lo cambia a export JAVA_HOME=$(/usr/libexec/java_home -v 1.8)selecciones de la última versión instalada de v8 de Java, y se fija este mismo tema.
Greg Haygood
8
vi ~/.bash_profile

Luego agregue las siguientes líneas:

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)

Ahora obtenga el archivo para que los cambios anteriores sean efectivos en el shell actual:

source ~/.bash_profile 
esquí sotheng
fuente
1
Esta última línea me export JAVA_HOME=$(/usr/libexec/java_home -v 1.8)solucionó las cosas - ¡Gracias!
JohnSalzarulo
7

En MacOS, ejecuté los siguientes comandos:

brew cask uninstall java
brew tap caskroom/versions
brew cask install java8 "or just brew cask install java to install latest version"
Andrés Felipe
fuente
3

Recibí este error, pero para una versión más reciente de Java: 10.0.2.

Para corregir mi error, seguí los pasos mencionados @Blacktovicheen este problema de Github: https://github.com/facebook/react-native/issues/17688

Cuando abrí la androidcarpeta dentro de mi proyecto a través de Android Studio, se me solicitó Android Gradle plugin update recommended. En ese momento, estaba siguiendo un tutorial un poco desactualizado que me decía que hiciera clic Don't remind me again for this project.

Sin embargo, como se @Blacktovicherecomienda en el problema de github vinculado anteriormente, a veces es necesario actualizar el complemento de Gradle. Después de la actualización, también tuve que hacer clic Install Build Tools 27... and sync project(no recuerdo la versión exacta).

Después de seguir estos pasos, pude ejecutar con éxito mi aplicación nativa de reacción en el emulador de Android Studio.

¡Espero que esto ayude a alguien!

Filósofo torpe
fuente
1

---- Diciembre de 2018 --- preste atención --- React Native no funciona con versiones de Java superiores a la 8, por lo que debe desinstalar su 9.0.1versión. Para hacerlo, ejecute los siguientes comandos:

cd /Library/Java/JavaVirtualMachines/
ls -l

Identifique la carpeta que contiene su versión de Java, luego elimínela

sudo rm -rf jdk.x.x_xxx.jdk

Después de eso, puede descargar e instalar java 8 desde Oracle nuevamente. Consulte la página de descarga de jdk8

Guilherme Ferreira
fuente
"React Native no funciona con versiones de Java superiores a 8" absolutamente incorrecto. Tengo una compilación que se ejecuta en JDK 13 en este momento.
Ian Kemp
Mi respuesta es de DICIEMBRE 2018. Obtenga React Native de 2018, y luego ejecútelo en un JDK 13 y luego, si funciona, venga aquí y actualice su respuesta.
Guilherme Ferreira
0

Si está utilizando Windows; Asegúrese de agregar su ruta jdk a la variable de ruta del entorno. Luego abra su carpeta de Android desde su proyecto nativo de reacción en Android Studio. Actualizará las cosas necesarias para usted automáticamente.

Shaon
fuente
0

Por lo general, obtengo este error cuando me olvido de compilar el proyecto con Android Studio. Una simple sincronización y actualización de Gradle hará el trabajo.

Nick Rameau
fuente
0

Resuelvo esto rebajando mi JDK a 8.

Gurzoni
fuente
0

En Ubuntu, debe ejecutar estas líneas de comando en la 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
Thien Nhan Nguyen
fuente