React Native error:“ ไม่สามารถระบุเวอร์ชัน 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

มีความคิดเกี่ยวกับวิธีแก้ไขปัญหานี้หรือไม่?


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

ดูเอกสารการแจกแจงการไล่ระดับสีที่เกี่ยวข้อง


4
ควรอยู่ในapp-folder / android / gradle / wrapper / gradle-wrapper.properties
Muhammad Adeel

6
หลังจากที่ฉันเปลี่ยนรุ่น gradle ตามคำแนะนำของคุณมันทำให้ฉันมีข้อผิดพลาดอีกอย่าง: ไม่สามารถเริ่มต้นคลาส com.android.sdklib.repository.
AndroidSdkHandler

7
ทำไมสิ่งนี้ถึงช่วยได้? React-Native ใช้ gradle-2.14.1 ตามค่าเริ่มต้นเมื่อคุณเริ่มต้นแอปพลิเคชันใหม่เหตุใดเราจึงต้องใช้แอปพลิเคชันอื่น
Waltari

11
ได้รับข้อผิดพลาดนี้หลังจากเพิ่มสิ่งนี้> javax / xml / bind / annotation / XmlSchema
Milon

15
คุณต้องใช้ Gradle เวอร์ชันล่าสุด ตัวอย่างเช่นเพื่อรองรับ Java 11 คุณสามารถใช้gradle-4.10-all.zip
Andrey Kolpakov

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 ที่ติดตั้งและแก้ไขปัญหาเดียวกันนี้
Greg Haygood

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 Version ของคุณจากนั้นลบออก

sudo rm -rf jdk.x.x_xxx.jdk

หลังจากนั้นคุณสามารถดาวน์โหลดและติดตั้ง java 8 จาก oracle อีกครั้ง อ้างถึงหน้าดาวน์โหลด jdk8


"React Native ไม่ทำงานกับ Java เวอร์ชันที่สูงกว่า 8" ไม่ถูกต้องอย่างแน่นอน ตอนนี้ฉันมีงานสร้างที่ปิด JDK 13
Ian Kemp

คำตอบของฉันมาจาก DEC 2018 รับ React Native จากปี 2018 จากนั้นเรียกใช้บน JDK 13 จากนั้นหากใช้งานได้มาที่นี่และอัปเดตคำตอบของคุณ
Guilherme Ferreira

0

หากคุณกำลังใช้ windows ตรวจสอบให้แน่ใจว่าคุณได้เพิ่มพา ธ jdk ของคุณไปยังตัวแปร Environment path จากนั้นเปิดโฟลเดอร์ Android ของคุณจากโครงการเนทีฟตอบสนองไปยังสตูดิโอ 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
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.