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.