Lỗi React Native: “Không thể xác định phiên bản java từ '9.0.1'.”


108

Tôi đang làm việc trên MacOS và chỉ mới bắt đầu với react-native.

Một trong những bước đầu tiên để bắt đầu là chạy: react-native run-android hoặc react-native run-ios. Nhưng tôi gặp lỗi này:

react-native run-android

Kết quả:

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

Đây là những gì tôi nhận được khi chạy java --version :

java --version

Kết quả:

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)

Biên tập

Phiên bản javac của tôi:

javac --version

Kết quả:

javac 9.0.1

Còn ý tưởng nào để sửa cái này nữa không?


2
bạn có thể chạy javac -versionquá trong terminal xin
bennygenel

1
Tôi thấy vấn đề này hơi cũ nhưng có thể liên quan đến phiên bản java hoặc gradle.
bennygenel

Câu trả lời:


205

Trong PROJECT_PATH/android/gradle/wrapper/gradle-wrapper.propertiestệpdistributionUrl của bạn , hãy cập nhật thông tin sau:

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

Xem tài liệu phân phối gradle liên quan


4
phải ở trong ứng dụng thư mục / android / gradle / wrapper / gradle-wrapper.properties
Muhammad Adeel

6
Sau khi tôi đã thay đổi phiên bản gradle để gợi ý của bạn nó mang lại cho tôi một lỗi khác: Không thể khởi tạo lớp com.android.sdklib.repository.AndroidSdkHandler
leMale

7
Tại sao điều này lại giúp ích? React-Native sử dụng gradle-2.14.1 theo mặc định khi bạn khởi tạo một ứng dụng mới, vậy tại sao chúng ta cần một cái khác?
Waltari

11
gặp lỗi này sau khi thêm cái này> javax / xml / bind / annotation / XmlSchema
Milon

15
Bạn cần sử dụng phiên bản mới nhất của Gradle. Ví dụ, để hỗ trợ Java 11, bạn có thể sử dụnggradle-4.10-all.zip
Andrey Kolpakov


15

Hãy chắc chắn rằng bạn đã JDK8cài đặt và sau đó đặt JAVA_HOMEvàoJDK8

ví dụ:

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

hoặc sử dụng .bash_*tệp để đặt biến này


1
Tôi có cái này trong .zshrc của mình trên mac: export JAVA_HOME=$(/usr/libexec/java_home) Thay đổi nó để export JAVA_HOME=$(/usr/libexec/java_home -v 1.8)chọn phiên bản Java v8 được cài đặt mới nhất và khắc phục sự cố tương tự này.
Greg Haygood

8
vi ~/.bash_profile

Sau đó thêm các dòng sau:

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)

Bây giờ nguồn tệp để thực hiện các thay đổi ở trên có hiệu lực trong trình bao hiện tại:

source ~/.bash_profile 

1
Dòng cuối cùng này đã export JAVA_HOME=$(/usr/libexec/java_home -v 1.8)giải quyết mọi thứ cho tôi - Cảm ơn!
JohnSalzarulo

7

Trên MacOS, tôi đã chạy các lệnh sau:

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

3

Tôi gặp phải lỗi này nhưng đối với phiên bản Java mới hơn - 10.0.2.

Để khắc phục lỗi của mình, tôi đã làm theo các bước được đề cập @Blacktovichetrong vấn đề Github này: https://github.com/facebook/react-native/issues/17688

Khi tôi mở androidthư mục bên trong dự án của mình qua Android Studio, tôi được nhắc với Android Gradle plugin update recommended. Vào thời điểm đó, tôi đang làm theo một hướng dẫn hơi lỗi thời yêu cầu tôi nhấp vào Don't remind me again for this project.

Tuy nhiên, theo @Blacktovichekhuyến nghị trong vấn đề github được liên kết ở trên, đôi khi cần phải cập nhật plugin Gradle. Sau khi cập nhật, tôi cũng phải bấm vào Install Build Tools 27... and sync project(tôi không nhớ phiên bản chính xác).

Sau khi làm theo các bước này, tôi đã có thể chạy thành công ứng dụng gốc phản ứng của mình trên trình giả lập Android Studio.

Hy vọng điều này sẽ giúp ai đó!


1

---- Tháng 12 năm 2018 --- hãy chú ý --- React Native không hoạt động với các phiên bản Java cao hơn 8, vì vậy bạn cần gỡ cài đặt 9.0.1phiên bản của mình . Để làm như vậy, hãy thực hiện các lệnh sau:

cd /Library/Java/JavaVirtualMachines/
ls -l

Xác định thư mục chứa Phiên bản Java của bạn, sau đó xóa nó

sudo rm -rf jdk.x.x_xxx.jdk

Sau đó, bạn có thể tải xuống và cài đặt lại java 8 từ oracle. Tham khảo trang tải jdk8


"React Native không hoạt động với các phiên bản Java cao hơn 8" hoàn toàn không chính xác. Tôi có một bản dựng đang chạy trên JDK 13 ngay bây giờ.
Ian Kemp

Câu trả lời của tôi là từ DEC 2018. Tải React Native từ năm 2018, sau đó chạy trên JDK 13 và sau đó nếu nó hoạt động, hãy vào đây và cập nhật câu trả lời của bạn.
Guilherme Ferreira

0

Nếu bạn đang sử dụng windows; Đảm bảo bạn thêm đường dẫn jdk của mình vào biến đường dẫn Môi trường. Sau đó, mở thư mục android của bạn từ dự án gốc phản ứng của bạn vào android studio. Nó sẽ tự động cập nhật những thứ cần thiết cho bạn.


0

Tôi thường gặp lỗi này khi quên xây dựng dự án bằng Android Studio. Đồng bộ hóa và nâng cấp Gradle đơn giản sẽ thực hiện công việc.


0

Tôi giải quyết vấn đề này bằng cách hạ cấp JDK của mình xuống 8.


0

Trên Ubuntu, bạn nên chạy các dòng lệnh này trong 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
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.