Tôi đang sử dụng Cordova 6.4.0 trong HĐH Windows 7, nhưng tôi gặp lỗi này khi tôi cố gắng tạo phiên bản Android:
Biến Java Home được đặt chính xác thành đường dẫn JDK, nhưng tôi không biết tại sao tôi lại gặp sự cố này. Bất kỳ đề nghị xin vui lòng?
Câu trả lời:
Gỡ cài đặt tất cả JDK trước đó bao gồm 1.8 Cài đặt JDK 1.8
Add or Remove Programs/Program Features
vào Windows OS
. Tiếp theo, xóa mọi phiên bản Java trước đó. Tôi version 7
cũng đã cài đặt và sau khi uninstalling
nó, cordova run android
hoạt động. Chúc may mắn.
Trong Linux (Debian / Ubuntu), điều này có thể được giải quyết bằng cách chọn Java 1.8 SDK trong
sudo update-alternatives --config javac
Thay đổi JAVA_HOME
trực tiếp biến env dường như không có bất kỳ tác dụng nào.
CHỈNH SỬA: trả lời các nhận xét: Điều này có thể liên quan đến thực tế là các cài đặt Java Debian mới (và dường như là Ubuntu) thông qua trình quản lý gói không sử dụng JAVA_HOME
biến môi trường để xác định vị trí của JRE. Xem cái này và bài đăng này để biết thêm thông tin.
java
nhưng không javac
! Bây giờ không cần gỡ cài đặt Java 9 :)
JAVA_HOME
đã trỏ sang phải 1,8 JDK, chỉ cập nhật hệ thống mặc định đã khiến Cordova hài lòng.
Bạn không phải gỡ cài đặt bất kỳ phiên bản sdk nào cao hơn. chỉ cần cài đặt jdk1.8.0_161 hoặc không nếu nó đã được cài đặt.
Bây giờ chỉ cần đặt JAVA_HOME
biến USER (không phải biến hệ thống) như trong hình bên dưới.
Bằng cách này, bạn không phải gỡ cài đặt phiên bản cao hơn và sự cố sẽ được giải quyết.
Những gì hiệu quả là gỡ cài đặt jdk 9 và cài đặt lại jkd 8.x
Trên Mac để gỡ cài đặt, hãy chuyển đến terminal và làm theo các bước sau:
cd /Library/Java/JavaVirtualMachines
sudo rm -rf jdk-9.0.1.jdk
Sau đó, cài đặt jdk 8.x bằng cách tải xuống gói .dmg từ Oracle.
Bạn có thể có phiên bản lớn hơn 8 nhưng Cordova chỉ hỗ trợ JDK 1.8. Xem liên kết này Tài liệu Cordova
Tôi đã xem qua đoạn mã thực sự kiểm tra số phiên bản java của bạn. Tìm kiếm thông tin sau: module.exports.check_java trong các nền tảng / android / cordova / lib / check_reqs.js . trên dòng 220. Bạn sẽ thấy biểu tượng regex và nhận xét do nhóm để lại rằng Java 10 sẽ được hỗ trợ trong tương lai.
Biểu thức chính quy hiện tại sẽ không thành công khi nó được chạy trên các phiên bản mới nhất của java chẳng hạn như Java 10. Điều đó là do Java 8 hoặc 9 được lưu ở định dạng sau: 1. [8-9]. ** nhưng Java 10 được lưu dưới dạng 10. ** và biểu thức chính quy tìm kiếm một phiên bản ở định dạng 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);
Giải pháp của tôi:
Bạn không phải gỡ cài đặt phiên bản JRE hoặc JDK hiện tại của mình vì trình cài đặt cài đặt từng phiên bản trong một thư mục cụ thể.
1- Cài đặt phiên bản Java 8 Theo liên kết này
2- Cập nhật các biến môi trường của bạn:
bằng cách trỏ chúng đến vị trí mà JRE 8 và JDK 8 đã được cài đặt.
// On my machine
C:\Program Files\Java\jdk1.8.0_171 // JAVA_HOME
C:\Program Files\Java\jre1.8.0_171 // JRE_HOME
Mở một phiên đầu cuối mới và chạy lệnh bị lỗi. Nó sẽ hoạt động ngay bây giờ.
Đã không làm việc?
Nếu nó không thành công vì những lý do khác, quá trình gỡ lỗi có thể xảy ra:
Gỡ cài đặt các phiên bản cũ hơn của JDK sẽ hoạt động. Nhưng nó có thể là một giải pháp thay thế tôi đoán. Tôi gặp phải vấn đề tương tự và nhận thấy rằng cả phiên bản mới của JDK và đường dẫn JDK phiên bản cũ hơn đã được đề cập trong 'path
'biến môi trường.
Việc xóa đường dẫn JDK phiên bản cũ hơn khỏi 'path
biến môi trường đã thực hiện thủ thuật đối với tôi. Hy vọng nó sẽ giúp ai đó quá.
Tôi đã phát hiện ra rằng biến môi trường đường dẫn của tôi đang trỏ đến java 1.7 trong khi JAVA_HOME trỏ đến 1.8, vì vậy tôi đã chỉnh sửa biến đường dẫn thành 1.8 và tôi ổn.
trong trường hợp của tôi, JAVA_HOME đã trỏ đến C: \ Program Files (x86) \ Java \ jdk1.7.0_55
khi tôi viết java trong cmd nó xuất ra C: \ Program Files (x86) \ Java \ jdk1.7.0_55 cùng với đường dẫn java.exe, tôi đã thay đổi biến JAVA_HOME từ biến môi trường thành C: \ Program Files \ Java \ jdk1.8.0_20 & nó đã hoạt động, vì vậy có vẻ như tôi đã có 2 phiên bản jdk & cordova cần phiên bản v1.8. * một.
MAC: Điều hướng đến: / Library / Java / JavaVirtualMachines Đảm bảo rằng bạn chỉ có jdk1.8.0_201.jdk Nếu bạn có nhiều thì hãy xóa JDK khác
nếu bạn có nhiều phiên bản JDK, bạn có thể chạy
export JAVA_HOME="/usr/local/env/java/jdk1.8.0_131.jdk/Contents/Home/"
trước khi xây dựng cordova, để sử dụng một phiên bản jdk cụ thể :)
Các bạn để có được sự kết hợp ngay trên Windows , bạn cần thực hiện các bước sau
C:\Program Files\Java\jdk1.8.0_162
đảm bảo rằng bạn không thêm \bin
giá trị vào.;
và thêm giá trị này vào đường dẫn hệ thống, ví dụ: C:\Program Files\Java\jdk1.8.0_162\bin;
Đây \bin
là phần được thêm vào.Lưu ý: Các biến môi trường rất phức tạp, chúng phải được đóng bởi a ; trước khi mở khác. Đó là lý do tại sao chúng tôi đặt một cái trước khi thêm giá trị và một cái sau giá trị để đóng nó.
Hôm nay, tôi cũng gặp lỗi này Cordova : Requirements check failed for JDK 1.8 or greater
trong Mac OS của mình khi xây dựng Ionic App khi tôi chạy lệnh ionic cordova build --release android
qua thiết bị đầu cuối.
Lệnh dưới đây giải quyết vấn đề của tôi: -
export JAVA_HOME="/Library/Java/JavaVirtualMachines/jdk1.8.0_231.jdk/Contents/Home"
Hy vọng nó sẽ giúp một ai đó trong tương lai!
$ 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
Lưu ý rằng, mặc dù những gì được thông báo cho biết, dường như nó có nghĩa là nó muốn phiên bản 1.8, và ném thông báo này nếu bạn có một sau phiên bản.
Điều gì tiếp theo là những nỗ lực trước đó của tôi dẫn tôi đến câu trả lời ở trên, sau đó đã hoạt động ... Bạn có thể cần làm điều gì đó khác tùy thuộc vào những gì được cài đặt, vì vậy có thể những ghi chú này có thể giúp ích:
Đặt nó thành phiên bản jdk1.8 của tôi
$ export PATH=/Library/Java/JavaVirtualMachines/jdk-11.0.7.jdk/Contents/Home/bin/javac:$PATH
Đặt nó thành phiên bản jdk11 của tôi
$ export PATH=/Library/Java/JavaVirtualMachines/jdk1.8.0_261.jdk/Contents/Home/bin/javac:$PATH
... nhưng thực sự điều đó không hoạt động vì /usr/bin/javac
vẫn là thứ chạy trước:
$ which javac
/usr/bin/javac
... để xem những gì chạy đầu tiên trên đường dẫn:
$ cat /etc/paths
/usr/local/bin
/usr/bin
/bin
/usr/sbin
/sbin
Điều đó có nghĩa là tôi có thể ghi đè /usr/bin/javac
... xem các lệnh ở đầu câu trả lời ...
Lệnh đặt nó thành jdk1.8 bằng cách sử dụng ln
, ở đầu câu trả lời này, là những gì phù hợp với tôi.
Thông báo lỗi này khiến người dùng nhầm lẫn, màn hình thành công như bên dưới.
Thông báo lỗi khiến người dùng cố gắng sửa lỗi bản dựng bằng cấu hình JAVA_HOME. Nhưng vấn đề thực sự không chỉ nằm ở JAVA_HOME.
Tôi khắc phục sự cố này với cấu hình đúng trong JAVA_HOME và Đường dẫn trong "biến hệ thống".
Hy vọng có thể giúp khắc phục sự cố không cài đặt lại JDK.
Câu trả lời được đăng bởi MadNeox là đúng. Tôi đã gặp phải vấn đề tương tự, tôi đã cài đặt jdk 9 cũng như phiên bản 1.8
Lần đầu tiên tôi đã thử bằng cách giữ jdk 9 và xóa 1.8 nó sẽ hiển thị lỗi Kiểm tra yêu cầu không thành công
Sau đó, tôi đã thử bằng cách gỡ cài đặt jdk9 và cài đặt lại 1. lần này nó hiển thị không chạy được phiên bản javac
Sau một thời gian thử nghiệm với các biến Môi trường, cuối cùng tôi đã có giải pháp
Tại thời điểm này hệ thống của tôi chỉ có phiên bản jdk 1.8 Cordova: 7.1.0
-Mở tab Biến môi trường -Dưới biến người dùng tạo một biến mới PATH - cấp cho nó giá trị sau C: \ Program Files \ Java \ jdk1.8.0_151 \ bin (có thể thay đổi tùy thuộc vào nơi bạn đã cài đặt jdk của mình)
Điều này sẽ giải quyết vấn đề của bạn Hy vọng nó sẽ giúp
Mặc dù câu trả lời đã được đưa ra nhưng tôi đã mất một khoảng thời gian để tìm ra mình đã sai ở đâu vì vậy tôi quyết định đăng bài này với hy vọng nó sẽ tiết kiệm thời gian của người khác
Chỉ cần đảm bảo rằng các phiên bản JDK tương tự (tức là 1.8 trong trường hợp này) có thể truy cập được từ PATH
biến môi trường và JAVA_HOME
. Ví dụ:
Biến if JAVA_HOME=C:\Program Files\Java\jdk1.8.0_152
then
PATH
cũng phải chứa đường dẫn trên và quan trọng là trước bất kỳ (nếu có) đường dẫn khác của if JDK / JRE đã được đề cập trong PATH
biến. Bạn có thể chọn gỡ cài đặt các phiên bản khác nếu không có ứng dụng nào khác đang sử dụng phiên bản java khác.
Nếu bạn đã cài đặt cả jdk8 và jdk9, bạn phải kiểm tra xem phiên bản nào là
trong đường dẫn và nơi JAVA_HOME đang trỏ tới.
Trong nhật ký bạn đã đăng, tôi thấy rằng JAVA_HOME đang dẫn đến JDK9.
sửa đổi globel JAVA_HOME env var của bạn để nhắm mục tiêu JDK8 hoặc bạn có thể thay đổi JAVA_HOME trong powershell trước khi sử dụng cordova CLI nếu bạn chỉ muốn sử dụng jdk8 cho cordova:
$env:JAVA_HOME="C:\Program Files\Java\jdk1.8.0_151"
**cordova build android**
Tôi gặp phải vấn đề tương tự với jdk1.8.0_201. Vấn đề này đã được giải quyết khi tôi tạo JAVA_HOME = C: \ Program Files \ Java \ jdk1.8.0_201 và thêm "C: \ Program Files \ Java \ jdk1.8.0_201 \ bin" vào biến đường dẫn
Tôi đã cài đặt (Mở) JDK 8 và 11 trên Windows 10 và tôi gặp sự cố tương tự. Đối với tôi những điều sau đây đã hoạt động:
Đó là một câu hỏi cũ, nhưng vì tôi vừa gặp vấn đề tương tự, nhưng lỗi có một nguồn khác, đây là một câu trả lời ngắn gọn.
Sự cố đã xảy ra trên Windows (chỉ) và với Webstorm IDE 2019.2
Trong phiên bản 2019.2 Webstorm đã gặp sự cố vì nó sử dụng nội bộ jdk mở cho biến% JAVA_HOME% thay vì java jdk được nhắm mục tiêu (từ hệ điều hành).
Trong trường hợp của tôi (vâng, nó cũ, đó là một dự án cordova cũ ...)
thực thi java -version
trong Windows cmd.exe:
$ java -version
java version "1.8.0_221"
nhưng thực thi java -version
trong thiết bị đầu cuối Webstorms:
$ java -version
openjdk version "11.0.3" 2019-04-16
// more output
Bản sửa lỗi đi kèm với bản vá được phát hành sau (hôm nay), phiên bản 2019.2.1. Bây giờ Webstorm sử dụng biến os% JAVA_HOME% như nó cần và java -version
đầu ra giống hệt nhau trong cả hai trường hợp.
Hy vọng nó sẽ giúp một ai đó!
Lỗi xảy ra khi đường dẫn mặc định đến java được đặt thành phiên bản khác với Java 8 hoặc JDK 1.8. *
Đối với trường hợp của tôi, tôi đã cài đặt Java 11 sau khi cài đặt Java 8
Bạn có thể kiểm tra bằng cách chạy:
java -version
Đối với trường hợp của tôi, nó đã trả lại:
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)
Để khắc phục điều này, chúng tôi cần đảm bảo rằng đường dẫn java được trỏ đến các tệp nhị phân Java 8
Giả sử bạn đã cài đặt Java 8 hoặc JDK 1.8. *:
%JAVA_HOME%\bin
hoặc C:\Program Files\Java\jdk1.8.0_251\bin
được thêm vào%JAVA_HOME%\bin
PATH trỏ đến JDK 1.8. *Không thêm các mục này nếu bạn không có, hãy tìm các mục PATH khác có thể ghi đè %JAVA_HOME%\bin
%JAVA_HOME%\bin
%JAVA_HOME%\bin
PATH trỏ đến Java 8 bây giờ sẽ được ưu tiên hơn các mục PATH khác trỏ đến JDK 11
java -version
Đối với trường hợp của tôi, sau đó nó trả về:
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)
Đã sửa!
Có vẻ như Android SDK không hỗ trợ Java 9. Hạ cấp xuống 8 nếu bạn không muốn quay trở lại JDK 1.8, điều này đối với tôi là vô lý. JDK 8 phù hợp với tôi nhưng hãy đảm bảo đặt biến môi trường JAVA_HOME vào vị trí cài đặt JDK của bạn một cách chính xác.
Theo tài liệu chính thức của Cordova, nó chỉ hỗ trợ JDK 1.8 không lớn hơn cho đến ngày (tháng 4 năm 2018) . Hoặc có thể có vấn đề với tập lệnh phát hiện phiên bản trong cordova.
Tôi vừa đổi tên thư mục JDK cũ hơn với _
, đề phòng nếu tôi cần thêm, và nó đã hoạt động.
C:\Program Files (x86)\Java\_jdk1.7.0_40
C:\Program Files (x86)\Java\_jre7
Tôi đang sử dụng windows và có hai phiên bản jdk 1.8 và 14 gì đó ...
Đối mặt với cùng một vấn đề và sau một số gỡ lỗi tìm ra giải pháp.
Và nó đã giải quyết
Phiên bản Ubuntu / Debian Linux của câu trả lời này là cài đặt openjdk 8 và đặt mặc định quaupdate-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