我在Windows 7 OS中使用Cordova 6.4.0,但是一旦尝试构建android版本,就会收到此错误:
Java Home变量已正确设置为JDK路径,但是我不知道为什么会遇到此问题。有什么建议吗?
Answers:
卸载所有以前的JDK,包括1.8。安装JDK 1.8。
Add or Remove Programs/Program Features
在Windows OS
。接下来,删除所有以前的Java版本。我version 7
也安装了一个uninstalling
,然后cordova run android
工作了。祝好运。
java
但是还没有javac
!现在无需卸载Java 9了:)
JAVA_HOME
指向正确的1.8 JDK,但只有更新系统默认值才能使Cordova满意。
起作用的是卸载jdk 9和重新安装jkd8.x。
在Mac上,要卸载,请转到终端并按照以下步骤操作:
cd /Library/Java/JavaVirtualMachines
sudo rm -rf jdk-9.0.1.jdk
然后通过从Oracle下载.dmg软件包来安装jdk8.x。
您的版本可能大于8,但Cordova仅支持JDK 1.8。查看此链接Cordova文档
我看了一下实际上检查您的Java版本号的代码。在platform / android / cordova / lib / check_reqs.js中查找以下内容:module.exports.check_java。在第220行。您将看到团队留下的正则表达式和评论,表示将来将支持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可能会起作用。但这可能是一种解决方法。我遇到了同样的问题,并注意到在'path
环境变量中同时提到了新版本的JDK和旧版本的JDK路径。
从'path
环境变量中删除旧版本的JDK路径对我来说很成功。希望它也能帮助别人。
我发现我的路径环境变量指向Java 1.7,而JAVA_HOME指向1.8,所以我将路径变量编辑为1.8,这样很好。
在我的情况下,JAVA_HOME指向C:\ Program Files(x86)\ Java \ jdk1.7.0_55
当我在java.cmd中的Java位置写出C:\ Program Files(x86)\ Java \ jdk1.7.0_55以及java.exe路径时,我已将JAVA_HOME变量从环境变量更改为C:\ Program Files \ Java \ jdk1.8.0_20&它起作用了,所以看来我有2个jdk实例&cordova需要v1.8。*一个。
伙计们要在Windows上正确混合,您需要执行以下操作
C:\Program Files\Java\jdk1.8.0_162
确保您未\bin
在值中添加。;
然后将此值添加到系统路径,例如,C:\Program Files\Java\jdk1.8.0_162\bin;
此处\bin
添加。注意:环境变量很棘手,应该用;来封闭它们; 在打开另一个之前。这就是为什么我们在加值之前放一个,然后在值之后放一个来关闭它。
今天,Cordova : Requirements check failed for JDK 1.8 or greater
当我ionic cordova build --release android
通过终端运行命令时,在构建Ionic App的Mac OS中也遇到了此错误。
下面的命令解决了我的问题:
export JAVA_HOME="/Library/Java/JavaVirtualMachines/jdk1.8.0_231.jdk/Contents/Home"
希望以后能对某人有所帮助!
$ 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
... ...参见答案顶部的
命令...ln
此答案顶部的使用将该命令设置为jdk1.8的命令对我有用。
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的位置)
这应该可以解决您的问题,希望对您有所帮助
尽管已经给出了答案,但确实花了我一些时间才能弄清楚我要去哪里错了,所以决定发布此希望,这样可以节省别人的时间
如果同时安装了jdk8和jdk9,则必须检查wich版本是
在路径以及JAVA_HOME指向的位置。
在您发布的日志中,我看到JAVA_HOME通向JDK9。
修改您的Globel JAVA_HOME env var到目标JDK8,或者如果您只想将jdk8用于cordova,则可以在使用cordova CLI之前在powershell中更改JAVA_HOME:
$env:JAVA_HOME="C:\Program Files\Java\jdk1.8.0_151"
**cordova build android**
这是一个古老的问题,但是由于我也遇到了同样的问题,但是错误有另一个来源,这里有一个简短的答案。
在Windows(仅限)和Webstorm IDE 2019.2上出现问题
Webstorm在2019.2版本中有一个问题,因为它在内部将open jdk用作%JAVA_HOME%变量,而不是(来自OS)目标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 8之后安装了Java 11
您可以通过运行以下命令进行测试:
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
指向JDK 1.8的PATH。*如果没有它们,请不要添加,请查找其他可能覆盖的PATH条目 %JAVA_HOME%\bin
%JAVA_HOME%\bin
%JAVA_HOME%\bin
指向Java 8的PATH现在将优先于指向JDK 11的其他PATH条目
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不支持Java9。如果您不想一直回到JDK 1.8,请降级到8,这对我来说是荒谬的。JDK 8对我有用,但请确保将JAVA_HOME环境变量正确设置为JDK安装的位置。
此答案的Ubuntu / Debian Linux版本是安装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