ฉันใช้ Cordova 6.4.0 ใน Windows 7 OS แต่ฉันได้รับข้อผิดพลาดนี้เมื่อฉันพยายามสร้างเวอร์ชัน Android:
ตัวแปร Java Home ถูกตั้งค่าอย่างถูกต้องไปยังเส้นทาง JDK แต่ฉันไม่รู้ว่าทำไมฉันถึงได้รับปัญหานี้ ข้อเสนอแนะใด ๆ กรุณา?
คำตอบ:
ถอนการติดตั้ง JDK ก่อนหน้าทั้งหมดรวมถึง 1.8 ติดตั้ง JDK 1.8
Add or Remove Programs/Program Features
Windows OS
จากนั้นลบ Java เวอร์ชันก่อนหน้าออก ฉันversion 7
ติดตั้งแล้วและหลังจากuninstalling
นั้นก็ใช้cordova run android
งานได้ โชคดี.
ใน Linux (Debian / Ubuntu) สามารถแก้ไขได้โดยเลือก Java 1.8 SDK ใน
sudo update-alternatives --config javac
การเปลี่ยนJAVA_HOME
ตัวแปร env โดยตรงดูเหมือนจะไม่มีผลใด ๆ
แก้ไข: การตอบกลับความคิดเห็น:สิ่งนี้อาจเกี่ยวข้องกับข้อเท็จจริงที่ว่าการติดตั้ง Java Debian ใหม่ (และเห็นได้ชัดว่า Ubuntu) ผ่านตัวจัดการแพ็คเกจไม่ได้ใช้JAVA_HOME
ตัวแปรสภาพแวดล้อมเพื่อกำหนดตำแหน่งของ JRE ดูสิ่งนี้และโพสต์นี้สำหรับข้อมูลเพิ่มเติม
java
แต่ไม่ใช่javac
! ตอนนี้ไม่จำเป็นต้องถอนการติดตั้ง Java 9 :)
JAVA_HOME
ชี้ไปที่ 1.8 JDK ที่ถูกต้อง แต่การอัปเดต Cordova ที่เป็นค่าเริ่มต้นของระบบเท่านั้น
สิ่งที่ใช้ได้ผลคือการถอนการติดตั้ง jdk 9 และติดตั้ง jkd 8.x ใหม่
ใน Mac เพื่อถอนการติดตั้งไปที่เทอร์มินัลแล้วทำตามขั้นตอนนี้:
cd /Library/Java/JavaVirtualMachines
sudo rm -rf jdk-9.0.1.jdk
จากนั้นติดตั้ง jdk 8.x โดยดาวน์โหลดแพ็คเกจ. dmg จาก Oracle
คุณอาจมีเวอร์ชันที่มากกว่า 8 แต่ Cordova รองรับเฉพาะ JDK 1.8 ดูลิงค์นี้เอกสาร Cordova
ฉันได้ดูส่วนของโค้ดที่ตรวจสอบหมายเลขเวอร์ชันของ java ของคุณ มองหาต่อไปนี้: module.exports.check_javaในแพลตฟอร์ม / Android / Cordova / lib / check_reqs.js ในบรรทัด 220 คุณจะเห็น regex และความคิดเห็นที่ทีมงานทิ้งไว้ว่า Java 10 จะได้รับการสนับสนุนในอนาคต
นิพจน์ทั่วไปที่มีอยู่จะล้มเหลวเมื่อรันกับ java เวอร์ชันล่าสุดเช่น Java 10 นั่นเป็นเพราะ Java 8 หรือ 9 ถูกบันทึกในรูปแบบต่อไปนี้: 1. [8-9] ** แต่ Java 10 ถูกบันทึก เป็น 10. ** และนิพจน์ทั่วไปจะค้นหาเวอร์ชันในรูปแบบ 1 [8-9] **
// Let's check for at least Java 8, and keep it future proof so we can support Java 10
var match = /javac ((?:1\.)(?:[8-9]\.)(?:\d+))|((?:1\.)(?:[1-9]\d+\.)(?:\d+))/i.exec(output);
วิธีแก้ปัญหาของฉัน:
คุณไม่จำเป็นต้องถอนการติดตั้ง JRE หรือ JDK เวอร์ชันปัจจุบันเนื่องจากโปรแกรมติดตั้งจะติดตั้งแต่ละเวอร์ชันในโฟลเดอร์เฉพาะ
1- ติดตั้งเวอร์ชัน Java 8 ตามลิงค์นี้
2- อัปเดตตัวแปรสภาพแวดล้อมของคุณ:
โดยชี้ไปยังตำแหน่งที่ติดตั้ง JRE 8 และ JDK 8
// On my machine
C:\Program Files\Java\jdk1.8.0_171 // JAVA_HOME
C:\Program Files\Java\jre1.8.0_171 // JRE_HOME
เปิดเซสชันเทอร์มินัลใหม่และรันคำสั่งที่ล้มเหลว ตอนนี้ควรใช้งานได้แล้ว
ไม่ทำงาน?
หากล้มเหลวด้วยเหตุผลอื่น ๆ กระบวนการดีบักที่เป็นไปได้:
การถอนการติดตั้ง JDK เวอร์ชันเก่าจะใช้งานได้ แต่อาจเป็นวิธีแก้ปัญหาที่ฉันเดา ฉันประสบปัญหาเดียวกันและสังเกตเห็นว่าเส้นทาง JDK เวอร์ชันใหม่และเวอร์ชันเก่ากว่าได้รับการกล่าวถึงใน'path
'ตัวแปรสภาพแวดล้อม
การลบพา ธ JDK เวอร์ชันเก่าออกจาก'path
'ตัวแปรสภาพแวดล้อมเป็นเคล็ดลับสำหรับฉัน หวังว่ามันจะช่วยใครบางคนด้วย
ฉันพบว่าตัวแปรสภาพแวดล้อมเส้นทางของฉันชี้ไปที่ java 1.7 ในขณะที่ JAVA_HOME ชี้ไปที่ 1.8 ดังนั้นฉันจึงแก้ไขตัวแปรเส้นทางเป็น 1.8 และฉันก็สบายดี
ในกรณีของฉัน JAVA_HOME ชี้ไปที่C: \ Program Files (x86) \ Java \ jdk1.7.0_55
เมื่อฉันเขียนโดยที่ javaใน cmd มันส่งออก C: \ Program Files (x86) \ Java \ jdk1.7.0_55 พร้อมกับพา ธ java.exe ฉันได้เปลี่ยนตัวแปร JAVA_HOME จากตัวแปรสภาพแวดล้อมเป็นC: \ Program Files \ Java \ jdk1.8.0_20 & มันใช้งานได้ดูเหมือนว่าฉันมีอินสแตนซ์ jdk 2 เครื่องและ Cordova ต้องการ v1.8. * หนึ่ง
MAC: ไปที่: / Library / Java / JavaVirtualMachines ตรวจสอบให้แน่ใจว่าคุณมี jdk1.8.0_201.jdk เท่านั้นหากคุณมีจำนวนมากให้ลบ JDK อื่น ๆ
ฉันเห็นด้วยกับ @Hozington นี่ควรเป็นข้อบกพร่องของรหัส Cordova ในการตรวจจับเวอร์ชัน Java สิ่งที่ฉันทำคือ:
JAVA_HOME
เส้นทางของ JDK 8 และเปลี่ยนpath
ตัวแปรด้วยcordova build
อีกครั้งและข้อผิดพลาดหายไป!
หากคุณมี JDK หลายเวอร์ชันคุณสามารถเรียกใช้
export JAVA_HOME="/usr/local/env/java/jdk1.8.0_131.jdk/Contents/Home/"
ก่อนสร้าง Cordova เพื่อใช้ jdk เวอร์ชันเฉพาะ :)
$ ls -l /Library/Java/JavaVirtualMachines/
$ ln -s /Library/Java/JavaVirtualMachines/jdk1.8.0_261.jdk/Contents/Home/bin/javac /usr/local/bin/javac
$ ln -s /Library/Java/JavaVirtualMachines/jdk-11.0.7.jdk/Contents/Home/bin/javac /usr/local/bin/javac
โปรดทราบว่าแม้จะมีสิ่งข้อความกล่าวก็ปรากฏว่ามันหมายความว่ามันต้องการรุ่น 1.8 และพ่นข้อความนี้ถ้าคุณมีต่อมารุ่น
สิ่งต่อไปนี้คือความพยายามก่อนหน้านี้ของฉันซึ่งนำฉันไปสู่คำตอบข้างต้นซึ่งได้ผล ... คุณอาจต้องทำอะไรบางอย่างที่แตกต่างออกไปขึ้นอยู่กับสิ่งที่ติดตั้งดังนั้นบันทึกเหล่านี้อาจช่วยได้:
ตั้งเป็นรุ่น jdk1.8 ของฉัน
$ export PATH=/Library/Java/JavaVirtualMachines/jdk-11.0.7.jdk/Contents/Home/bin/javac:$PATH
ตั้งเป็นรุ่น jdk11 ของฉัน
$ export PATH=/Library/Java/JavaVirtualMachines/jdk1.8.0_261.jdk/Contents/Home/bin/javac:$PATH
... แต่จริงๆแล้วมันใช้ไม่ได้เพราะ/usr/bin/javac
ยังคงเป็นสิ่งที่ทำงานก่อน:
$ which javac
/usr/bin/javac
... เพื่อดูสิ่งที่วิ่งก่อนบนเส้นทาง:
$ cat /etc/paths
/usr/local/bin
/usr/bin
/bin
/usr/sbin
/sbin
นั่นหมายความว่าฉันสามารถแทนที่/usr/bin/javac
... ดูคำสั่งที่ด้านบนของคำตอบ ...
คำสั่งเพื่อตั้งค่าเป็น jdk1.8 โดยใช้ln
ที่ด้านบนของคำตอบนี้คือสิ่งที่ใช้ได้ผลสำหรับฉัน
คนที่จะได้รับการผสมผสานอย่างถูกต้องบนWindowsคุณต้องทำสิ่งต่อไปนี้
C:\Program Files\Java\jdk1.8.0_162
ตรวจสอบให้แน่ใจว่าคุณไม่ได้เพิ่ม\bin
ในค่า;
และเพิ่มค่านี้ในเส้นทางระบบเช่นC:\Program Files\Java\jdk1.8.0_162\bin;
นี่\bin
คือเพิ่มหมายเหตุ:ตัวแปรสภาพแวดล้อมนั้นยุ่งยากพวกเขาควรจะปิดโดย; ก่อนเปิดอีกอัน นั่นคือเหตุผลที่เราใส่ค่าหนึ่งก่อนเพิ่มค่าและอีกหนึ่งค่าเพื่อปิด
บางครั้งเปลี่ยนเส้นทางแล้วjava-home
ไม่ได้ผล คุณต้องเพิ่ม
C:\Users\[your user]\AppData\Local\Android\Sdk\platform-tools
C:\Users\[your user]\AppData\Local\Android\Sdk\tools
ไปยังเส้นทางตัวแปรสภาพแวดล้อมเช่นกัน
วันนี้ฉันได้รับข้อผิดพลาดนี้Cordova : Requirements check failed for JDK 1.8 or greater
ใน Mac OS ของฉันในขณะที่สร้างแอพ Ionic เมื่อฉันเรียกใช้คำสั่งionic cordova build --release android
ผ่านเทอร์มินัล
ด้านล่างคำสั่งแก้ไขปัญหาของฉัน: -
export JAVA_HOME="/Library/Java/JavaVirtualMachines/jdk1.8.0_231.jdk/Contents/Home"
หวังว่ามันจะช่วยใครบางคนในอนาคต!
ข้อความแสดงข้อผิดพลาดนี้ทำให้ผู้ใช้สับสนหน้าจอความสำเร็จดังต่อไปนี้
ข้อความแสดงข้อผิดพลาดทำให้ผู้ใช้พยายามแก้ไขบิลด์ล้มเหลวด้วยการกำหนดค่า JAVA_HOME แต่ปัญหาที่แท้จริงไม่ได้อยู่ที่ JAVA_HOME เท่านั้น
ฉันแก้ไขปัญหานี้ด้วย config ที่ถูกต้องใน JAVA_HOME และ Path ใน "system variable"
หวังว่าจะช่วยแก้ไขปัญหาได้ แต่ไม่สามารถติดตั้ง JDK ใหม่ได้
คำตอบที่โพสต์โดย MadNeox นั้นถูกต้องฉันประสบปัญหาที่คล้ายกันฉันติดตั้ง jdk 9 แล้วเช่นเดียวกับเวอร์ชัน 1.8
ฉันพยายามครั้งแรกโดยเก็บ jdk 9 และลบ 1.8 มันจะแสดงข้อผิดพลาดการตรวจสอบข้อกำหนดล้มเหลว
จากนั้นฉันลองโดยถอนการติดตั้ง jdk9 และติดตั้งใหม่ 1 ครั้งนี้แสดงว่าล้มเหลวในการเรียกใช้ javac-version
หลังจากเล่นกับตัวแปรสภาพแวดล้อมมาระยะหนึ่งในที่สุดฉันก็ได้วิธีแก้ปัญหา
ณ จุดนี้ระบบของฉันมีเฉพาะรุ่น jdk 1.8 Cordova: 7.1.0
- เปิดแท็บตัวแปรสภาพแวดล้อม - ภายใต้ตัวแปรผู้ใช้สร้างตัวแปรใหม่ PATH - ให้ค่าต่อไปนี้ C: \ Program Files \ Java \ jdk1.8.0_151 \ bin (อาจเปลี่ยนแปลงได้ขึ้นอยู่กับตำแหน่งที่คุณติดตั้ง jdk ของคุณ)
สิ่งนี้ควรแก้ปัญหาของคุณหวังว่าจะช่วยได้
แม้ว่าจะได้รับคำตอบไปแล้ว แต่ก็ต้องใช้เวลาพอสมควรในการคิดว่าตัวเองทำอะไรผิดจึงตัดสินใจโพสต์โดยหวังว่าจะช่วยประหยัดเวลาของคนอื่นได้
ตรวจสอบให้แน่ใจว่า JDK เวอร์ชันเดียวกัน (เช่น 1.8 ในกรณีนี้) สามารถเข้าถึงได้จากPATH
ตัวแปรสภาพแวดล้อมและJAVA_HOME
. ตัวอย่าง: ตัวแปรIf
JAVA_HOME=C:\Program Files\Java\jdk1.8.0_152
then
PATH
ควรมีเส้นทางด้านบนและสำคัญก่อนเส้นทางอื่น ๆ (ถ้ามี) ของ if JDK / JRE ที่กล่าวถึงในPATH
ตัวแปร คุณสามารถเลือกถอนการติดตั้งเวอร์ชันอื่นได้หากไม่มีแอปพลิเคชันอื่นใช้ java เวอร์ชันอื่น
หากคุณติดตั้งทั้ง jdk8 และ jdk9 คุณต้องตรวจสอบว่าเป็นเวอร์ชันใด
ในเส้นทางและจุดที่ JAVA_HOME ชี้ไป
ในบันทึกที่คุณโพสต์ฉันเห็นว่า JAVA_HOME กำลังนำไปสู่ JDK9
แก้ไข globel JAVA_HOME env var เพื่อกำหนดเป้าหมาย JDK8 หรือคุณสามารถเปลี่ยน JAVA_HOME ใน powershell ก่อนที่คุณจะใช้ Cordova CLI หากคุณต้องการใช้ jdk8 สำหรับ Cordova เท่านั้น:
$env:JAVA_HOME="C:\Program Files\Java\jdk1.8.0_151"
**cordova build android**
หากคุณติดตั้ง Java หลายเวอร์ชันและต้องการเก็บไว้คุณต้องตรวจสอบสิ่งต่อไปนี้:
ฉันประสบปัญหาเดียวกันกับ jdk1.8.0_201 มันได้รับการแก้ไขเมื่อฉันสร้าง JAVA_HOME = C: \ Program Files \ Java \ jdk1.8.0_201 และเพิ่ม "C: \ Program Files \ Java \ jdk1.8.0_201 \ bin" ในตัวแปรเส้นทาง
ฉันได้ติดตั้ง (เปิด) JDK 8 และ 11 บน Windows 10 และพบปัญหาเดียวกัน สำหรับฉันการทำงานต่อไปนี้:
เป็นคำถามเก่า แต่เนื่องจากฉันเพิ่งมีปัญหาเดียวกัน แต่ข้อผิดพลาดมีแหล่งอื่นนี่คือคำตอบสั้น ๆ
เกิดปัญหาบน Windows (เท่านั้น) และกับ Webstorm IDE 2019.2
ในเวอร์ชัน 2019.2 Webstorm มีปัญหาเนื่องจากใช้ open jdk ภายในสำหรับตัวแปร% JAVA_HOME% แทนที่จะเป็น (จากระบบปฏิบัติการ) ที่กำหนดเป้าหมาย java jdk
ในกรณีของฉัน (ใช่มันเก่าแล้วมันเป็นโครงการ Cordova เก่า ... )
การดำเนินการjava -version
ใน Windows cmd.exe:
$ java -version
java version "1.8.0_221"
แต่ดำเนินการjava -version
ในเทอร์มินัล Webstorms:
$ java -version
openjdk version "11.0.3" 2019-04-16
// more output
การแก้ไขมาพร้อมกับแพตช์ที่ออกในภายหลัง (วันนี้) เวอร์ชัน 2019.2.1 ตอนนี้ Webstorm ใช้ตัวแปร os% JAVA_HOME% ตามที่ควรและjava -version
ผลลัพธ์จะเหมือนกันในทั้งสองกรณี
หวังว่าจะช่วยใครสักคน!
ข้อผิดพลาดเกิดขึ้นเมื่อเส้นทางเริ่มต้นไปยัง java ถูกตั้งค่าเป็นเวอร์ชันอื่นที่ไม่ใช่ Java 8 หรือ JDK 1.8 *
สำหรับกรณีของฉันฉันได้ติดตั้ง Java 11 หลังจากติดตั้ง Java 8
คุณสามารถทดสอบโดยเรียกใช้:
java -version
สำหรับกรณีของฉันมันส่งคืน:
java version "11.0.8" 2020-07-14 LTS
Java(TM) SE Runtime Environment 18.9 (build 11.0.8+10-LTS)
Java HotSpot(TM) 64-Bit Server VM 18.9 (build 11.0.8+10-LTS, mixed mode)
ในการแก้ไขปัญหานี้เราต้องตรวจสอบให้แน่ใจว่าพา ธ java ชี้ไปที่ไบนารี Java 8 แทน
สมมติว่าคุณติดตั้ง Java 8 หรือ JDK 1.8 แล้ว *:
%JAVA_HOME%\bin
หรือC:\Program Files\Java\jdk1.8.0_251\bin
เพิ่ม%JAVA_HOME%\bin
PATH ที่ชี้ไปที่ JDK 1.8 *อย่าเพิ่มสิ่งเหล่านี้หากคุณไม่มีให้ค้นหารายการ PATH อื่นที่อาจแทนที่ %JAVA_HOME%\bin
%JAVA_HOME%\bin
%JAVA_HOME%\bin
PATH ที่ชี้ไปที่ Java 8 จะถูกจัดลำดับความสำคัญเหนือรายการ PATH อื่น ๆ ที่ชี้ไปที่ JDK 11
java -version
สำหรับกรณีของฉันมันกลับ:
java version "1.8.0_251"
Java(TM) SE Runtime Environment (build 1.8.0_251-b08)
Java HotSpot(TM) 64-Bit Server VM (build 25.251-b08, mixed mode)
แก้ไขแล้ว!
ดูเหมือนว่า Android SDK จะไม่รองรับ Java 9 ดาวน์เกรดเป็น 8 หากคุณไม่ต้องการกลับไปที่ JDK 1.8 ซึ่งสำหรับฉันแล้วมันไร้สาระ JDK 8 ใช้ได้สำหรับฉัน แต่อย่าลืมตั้งค่าตัวแปรสภาพแวดล้อม JAVA_HOME ไปยังตำแหน่งของการติดตั้ง JDK ของคุณอย่างถูกต้อง
ตามเอกสารอย่างเป็นทางการของ Cordova สนับสนุนเฉพาะ JDK 1.8 ไม่เกินจนถึงวันที่ (เมษายน 2018)2018) หรืออาจมีปัญหากับสคริปต์การตรวจจับเวอร์ชันภายใน Cordova
ฉันเพิ่งเปลี่ยนชื่อโฟลเดอร์ JDK ที่เก่ากว่าด้วย_
ในกรณีที่ฉันต้องการเพิ่มเติมและใช้งานได้
C:\Program Files (x86)\Java\_jdk1.7.0_40
C:\Program Files (x86)\Java\_jre7
ฉันใช้ windows และมีรุ่น jdk 1.8 และ 14 สองรุ่น ...
ประสบปัญหาเดียวกันและหลังจากการแก้ไขข้อบกพร่องบางอย่างพบวิธีแก้ปัญหา
และแก้ไขได้
อูบุนตู / Debian ลินุกซ์รุ่นของคำตอบนี้คือการติดตั้ง OpenJDK 8 และการตั้งค่าเริ่มต้นผ่านupdate-alternatives
# install (open)jdk 8
sudo apt-get install -y openjdk-8-jdk
# update java compiler and set to 1.8
update-alternatives --config javac
# update java runtime (optional)
update-alternatives --config java
# Also set $JAVA_HOME and $PATH to your .bashrc (optional)
echo 'export JAVA_HOME=/usr/lib/jvm/java-8-openjdk-amd64' >> ~/.bashrc
echo 'export PATH="$PATH:$JAVA_HOME/bin' >> ~/.bashrc
# load in current bash session
source ~/.bashrc