Ошибка React Native: «Не удалось определить версию Java из« 9.0.1 »».

109

Я работаю над MacOS и только начинаю с react-native.

Один из первых шагов для начала - запустить: react-native run-androidили react-native run-ios. Но я получаю такую ​​ошибку:

react-native run-android

Результат:

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

Вот что я получаю, когда бегаю java --version:

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)
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)

редактировать

Моя версия javac:

javac --version

Результат:

javac 9.0.1

Есть идеи, как это исправить?

Xar
источник
2
javac -version
Можете
1
Я обнаружил, что эта проблема немного устарела, но может быть связана либо с версией java, либо с gradle.
bennygenel

Ответы:

206

В вашем PROJECT_PATH/android/gradle/wrapper/gradle-wrapper.propertiesфайле обновите вашdistributionUrl до следующего:

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

См. Соответствующую документацию по дистрибутивам Gradle

Мухаммад Адил
источник
4
должно быть в папке приложения / android / gradle / wrapper / gradle-wrapper.properties
Мухаммад Адил
6
После того, как я изменил версию gradle на ваше предложение, у меня возникла еще одна ошибка: не удалось инициализировать класс com.android.sdklib.repository.AndroidSdkHandler
leMale
7
Но почему это помогает? React-Native по умолчанию использует gradle-2.14.1, когда вы запускаете новое приложение, так зачем нам другое?
Waltari
11
получение этой ошибки после добавления этого> javax / xml / bind / annotation / XmlSchema
Милон
15
Вам необходимо использовать последнюю версию Gradle. Например, для поддержки Java 11 можно использоватьgradle-4.10-all.zip
Андрей Колпаков
24

На самом деле самый быстрый способ обойти эту ошибку - использовать JDK 8. За исключением тех случаев, когда вам действительно нужно использовать JDK9.

http://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html

Не забудьте изменить переменную среды JAVA_HOME на новую версию JDK!

Xen_mar
источник
1
связанная ссылка для переключения версии Java stackoverflow.com/questions/21964709/…
Акшай Виджай Джейн
15

Убедитесь , что вы JDK8установили , а затем установить JAVA_HOMEвJDK8

например:

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

или используйте .bash_*файлы для установки этой переменной

бобу
источник
1
У меня было это в моем .zshrc на Mac: export JAVA_HOME=$(/usr/libexec/java_home) изменение его, чтобы выбрать export JAVA_HOME=$(/usr/libexec/java_home -v 1.8)последнюю установленную версию Java v8, и исправить эту же проблему.
Грег Хейгуд
8
vi ~/.bash_profile

Затем добавьте следующие строки:

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)

Теперь создайте файл, чтобы изменения вступили в силу в текущей оболочке:

source ~/.bash_profile 
приятные лыжи
источник
1
Эта последняя строка export JAVA_HOME=$(/usr/libexec/java_home -v 1.8)решила проблему для меня - Спасибо!
JohnSalzarulo
7

В MacOS я выполнил следующие команды:

brew cask uninstall java
brew tap caskroom/versions
brew cask install java8 "or just brew cask install java to install latest version"
Андрес Фелипе
источник
3

Я получал эту ошибку, но для более поздней версии Java - 10.0.2.

Чтобы исправить свою ошибку, я выполнил шаги, упомянутые @Blacktovicheв этой проблеме Github: https://github.com/facebook/react-native/issues/17688

Когда я открыл androidпапку внутри своего проекта через Android Studio, мне было предложено ввести Android Gradle plugin update recommended. В то время я следовал немного устаревшему руководству, в котором мне предлагалось щелкнуть Don't remind me again for this project.

Однако, как @Blacktovicheрекомендовано в проблеме с github, указанной выше, иногда необходимо обновить плагин Gradle. После обновления тоже пришлось нажать Install Build Tools 27... and sync project(точную версию не помню).

Выполнив эти шаги, я смог успешно запустить собственное приложение для реагирования на эмуляторе Android Studio.

Надеюсь, это кому-то поможет!

Блуждающий философ
источник
1

---- Декабрь 2018 --- обратите внимание --- React Native не работает с версиями Java выше 8, поэтому вам необходимо удалить вашу 9.0.1версию. Для этого выполните следующие команды:

cd /Library/Java/JavaVirtualMachines/
ls -l

Определите папку, содержащую вашу версию Java, затем удалите ее.

sudo rm -rf jdk.x.x_xxx.jdk

После этого вы можете снова загрузить и установить java 8 из oracle. См. Страницу загрузки jdk8

Гильерме Феррейра
источник
«React Native не работает с версиями Java выше 8» абсолютно неверно. У меня сейчас есть сборка на JDK 13.
Ян Кемп,
Мой ответ от декабря 2018 года. Получите React Native с 2018 года, а затем запустите JDK 13, а затем, если он сработает, приходите сюда и обновите свой ответ.
Гильерме Феррейра,
0

Если вы используете окна; Убедитесь, что вы добавили свой путь jdk в переменную пути к среде. Затем откройте папку Android из своего собственного проекта в студии Android. Он автоматически обновит необходимые вам вещи.

Шаон
источник
0

Обычно я получаю эту ошибку, когда забываю собрать проект с помощью Android Studio. Простая синхронизация и обновление Gradle сделают всю работу.

Ник Рамо
источник
0

Я решил эту проблему, понизив JDK до 8.

Гурзони
источник
0

В Ubuntu вы должны запустить эти командные строки в терминале:

sudo add-apt-repository ppa:webupd8team/java
sudo apt-get update
sudo apt install oracle-java8-installer
sudo apt install oracle-java8-set-default
Тхиен Нхан Нгуен
источник