Реагувати нативну помилку: "Не вдалося визначити версію Java з" 9.0.1 "."


108

Я працюю над 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

Будь-яка ідея, як це виправити?


2
чи можете ви також бігти javac -versionв терміналі, будь ласка
bennygenel

1
Я виявив, що це питання трохи старе, але може бути пов'язане з версією java або gradle.
bennygenel

Відповіді:


205

У своєму PROJECT_PATH/android/gradle/wrapper/gradle-wrapper.propertiesфайлі оновіть йогоdistributionUrl до наступного:

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

Дивіться відповідну документацію щодо розподілу градусів


4
має бути в папці додатків / android / gradle / обгортки / gradle-wrapper.properties
Muhammad Adeel

6
Після того як я змінив версію gradle на вашу пропозицію, це дає мені ще одну помилку: не вдалося ініціалізувати клас com.android.sdklib.repository.AndroidSdkHandler
leMale

7
Чому це допомагає? React-Native використовує gradle-2.14.1 за замовчуванням, коли ви запускаєте нову програму, так навіщо нам потрібна інша?
Уолтарі

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!


1
пов'язане посилання для переключення на версію java stackoverflow.com/questions/21964709/…
Akshay Vijay Jain

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/isissue/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.
Ян Кемп

Моя відповідь - від DEC 2018. Отримайте React Native з 2018 року, а потім запустіть на JDK 13, а потім, якщо він працює, приходьте сюди та оновіть свою відповідь.
Гільгерме Феррейра

0

Якщо ви використовуєте windows; Переконайтеся, що ви додали шлях jdk до змінної шляху оточення. Потім відкрийте папку андроїд з рідного проекту реагування в студію Android. Він автоматично оновить необхідні речі.


0

Я зазвичай отримую цю помилку, коли забуваю створити проект за допомогою Android Studio. Проста синхронізація та оновлення Gradle зробить роботу.



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
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.