我在Windows 7操作系统中使用Cordova 6.4.0,但是一旦我尝试构建Android版本,我就会收到此错误:
Java Home变量已正确设置为JDK路径,但我不知道为什么会出现此问题。有什么建议吗?
答案 0 :(得分:46)
我想我找到了问题的解决方案。我会发布答案,以防万一有人面临同样的问题。
卸载所有以前的JDK,包括1.8 安装JDK 1.8
答案 1 :(得分:29)
有用的是卸载jdk 9并重新安装jkd 8.x
在Mac上,为了卸载,请转到终端并按照以下步骤操作:
cd /Library/Java/JavaVirtualMachines
sudo rm -rf jdk-9.0.1.jdk
然后从Oracle下载.dmg软件包安装jdk 8.x。
答案 2 :(得分:28)
您不必卸载任何更高版本的sdk。只需安装jdk1.8.0_161,如果已经安装,请不要安装。
现在只需设置JAVA_HOME
USER变量(非系统变量),如下图所示。
这样您就不必卸载更高版本,问题就解决了。
答案 3 :(得分:16)
卸载旧版本的JDK会有效。但我猜这可能是一种解决方法。我遇到了同样的问题,并注意到'path
'中提到了新版本的JDK和旧版本的JDK路径。环境变量。
从'path
'删除旧版JDK路径环境变量对我有用。希望它也可以帮助别人。
答案 4 :(得分:15)
在Linux(Debian / Ubuntu)中,这可以通过在
中选择Java 1.8 SDK来解决sudo update-alternatives --config javac
直接更改JAVA_HOME
env变量似乎没有任何效果。
编辑:回复评论:这可能与通过软件包管理器的新Debian(显然是Ubuntu)Java安装不使用JAVA_HOME
环境这一事实有关变量来确定JRE的位置。有关详细信息,请参阅this和this post。
答案 5 :(得分:10)
您的版本可能大于8但Cordova仅支持JDK 1.8。查看此链接Cordova Documentation
我看了一下实际检查java版本号的代码片段。在 platforms / android / cordova / lib 中查找以下内容: 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版本Follow this link
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
打开一个新的终端会话并运行失败的命令。它现在应该工作。
没用?
如果因其他原因失败,可能的调试过程:
答案 6 :(得分:9)
我发现我的路径环境变量指向java 1.7,而JAVA_HOME指向1.8,所以我将路径变量编辑为1.8,我很好。
答案 7 :(得分:7)
在我的情况下,JAVA_HOME指向 C:\ Program Files(x86)\ Java \ jdk1.7.0_55
当我在cmd中编写 where 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。* one。
答案 8 :(得分:5)
$ 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的命令对我有用。
答案 9 :(得分:3)
今天,当我通过终端运行命令Cordova : Requirements check failed for JDK 1.8 or greater
时,在构建Ionic App时,我的Mac OS中也出现此错误ionic cordova build --release android
。
下面的命令解决了我的问题:-
export JAVA_HOME="/Library/Java/JavaVirtualMachines/jdk1.8.0_231.jdk/Contents/Home"
希望它将对以后的人有所帮助!
答案 10 :(得分:2)
我同意@Hozington。 这应该是检测Java版本的Cordova代码上的错误。 我所做的是:
JAVA_HOME
更改为JDK 8的路径,并同时更改path
变量。cordova build
。错误消失了!
答案 11 :(得分:2)
MAC: 导航到:/ Library / Java / JavaVirtualMachines 确保只有jdk1.8.0_201.jdk 如果您有很多,则删除其他JDK
答案 12 :(得分:2)
有时更改路径,java-home
不起作用。您需要添加
C:\Users\[your user]\AppData\Local\Android\Sdk\platform-tools
C:\Users\[your user]\AppData\Local\Android\Sdk\tools
也进入环境变量路径。
答案 13 :(得分:2)
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的位置而改变)
这应该可以解决您的问题 希望它有所帮助
虽然答案已经给出,但确实花了一些时间才弄明白我哪里出错了所以决定发布这个希望它可以节省别人的时间
答案 14 :(得分:2)
错误消息让用户尝试使用JAVA_HOME配置修复构建失败。 但真正的问题不仅仅在于JAVA_HOME。
我使用JAVA_HOME中的正确配置和"系统变量"中的路径修复此问题。
希望可以帮助解决问题,但不能重新安装JDK。
答案 15 :(得分:1)
伙计们要在 Windows 上找到合适的内容,您需要执行以下操作
答案 16 :(得分:1)
如果您同时安装了jdk8和jdk9,则必须检查该版本是否
路径中的和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**
答案 17 :(得分:1)
昨天我的新笔记本电脑(全新安装)遇到了同样的问题,唯一的例外是 Cordova 说:
Requirements check failed for JDK 8 ('1.8.*')! Detected version: null
那个检测到的版本:null对我来说是真正的问题!
当查看 check_reqs.js(如上面的帖子中提到的)时,您会注意到这就是魔法发生的地方:它包含一个函数“check_java”,在某些时候,它使用 “execa”< /strong> 检索已安装的 Java 版本:
return execa('javac', ['-version'], { all: true })
.then(({ all: output }) => {
// Java <= 8 writes version info to stderr, Java >= 9 to stdout
const match = /javac\s+([\d.]+)/i.exec(output);
return match && match[1];
}
我的问题是,无论出于何种原因,我有一个过时的“execa”版本,它不包含用于输出的 “all” 属性。因此,检索到的 Java 版本始终未定义。
通过将 "execa": "^4.0.2"
添加到 package.json 中的依赖项并再次运行“npm i”,我能够解决这个问题。
只是想分享这个见解。
答案 18 :(得分:1)
如果您有许多版本的JDK,则可以运行
print("what is x")
x = int(input('> '))
print("what is y")
y = int(input('> '))
if x > y
print("x > y")
elif y > x:
print("y > x")
else:
print("whatever")
在cordova构建之前,要使用特定版本的jdk:)
答案 19 :(得分:1)
当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
PATH。* 如果没有这些属性,请不要添加,请找到其他可能覆盖%JAVA_HOME%\bin
%JAVA_HOME%\bin
%JAVA_HOME%\bin
路径将优先于指向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)
已修复!
答案 20 :(得分:1)
确保可以从PATH
环境变量和JAVA_HOME
访问相同的JDK版本(在本例中为1.8)。例:
如果
JAVA_HOME=C:\Program Files\Java\jdk1.8.0_152
然后
PATH
变量也应该包含上面的路径,重要的是在PATH
变量中已经提到JDK / JRE的任何其他路径(如果有的话)之前。如果没有其他应用程序使用不同版本的java,您可以选择卸载其他版本。
答案 21 :(得分:1)
这是一个古老的问题,但是由于我只是遇到了同样的问题,但是错误有另一个来源,这里有一个简短的答案。
Windows(仅)和Webstorm IDE 2019.2中出现的问题
在版本2019.2中,Webstorm出现了一个问题,因为它在内部将openjdk用于%JAVA_HOME%变量,而不是(来自OS)针对性的Java jdk。
就我而言(是的,这很旧,这是一个古老的cordova项目...)
在Windows cmd.exe中执行java -version
:
$ java -version
java version "1.8.0_221"
但在Webstorms终端中执行java -version
:
$ java -version
openjdk version "11.0.3" 2019-04-16
// more output
稍后(今天)发布的修补程序(2019.2.1版)已修复。
现在,Webstorm会按需使用os%JAVA_HOME%变量,并且两种情况下java -version
的输出都是相同的。
希望它对某人有帮助!
答案 22 :(得分:0)
如果之前的任何答案都不起作用,我遇到了同样的问题,在我的机器上下载并设置正确的路径。但是问题并没有解决,直到我编辑了路径并在它的开头(在路径的顶部)制作了 %JAVA_HOME%/bin
。而且效果很好!
答案 23 :(得分:0)
似乎Android SDK不支持Java 9.如果你不想一直回到JDK 1.8那么降级到8这对我来说是荒谬的。 JDK 8适用于我,但请确保将JAVA_HOME环境变量正确设置为JDK安装的位置。
答案 24 :(得分:0)
在一行中,没有提示,在 Ubuntu/Debian 中
sudo update-java-alternatives -s $(sudo update-java-alternatives -l | grep 8 | cut -d " " -f1)
答案 25 :(得分:0)
此答案的 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
答案 26 :(得分:0)
我刚刚使用_
重命名了旧的JDK文件夹,以防万一我需要进一步使用它,并且它有效。
C:\Program Files (x86)\Java\_jdk1.7.0_40
C:\Program Files (x86)\Java\_jre7
答案 27 :(得分:0)
我正在使用Windows,并且有两个jdk 1.8和14版本……
遇到相同的问题,经过调试后找到解决方案。
它解决了
答案 28 :(得分:0)
面对同样的问题,我意识到我并没有通过删除旧的JAVA_HOME
目录(我安装了版本11)来更改PC中的所有Java。我还必须编辑path
变量。至少然后我得到了有关gradle的错误并顺利解决了。
答案 29 :(得分:0)
即使我正确地设置了所有路径变量,我仍然会收到此消息。
大量研究之后,我发现我的IDE(webstorm 19.x)与Java 11捆绑在一起。 阅读以下内容:https://intellij-support.jetbrains.com/hc/en-us/articles/206544879-Selecting-the-JDK-version-the-IDE-will-run-under帮助我将IDE切换回Java 8,这为我解决了这个问题。
答案 30 :(得分:0)
我在Windows 10上安装了(Open)JDK 8和11,但遇到了同样的问题。对我来说,以下工作:
答案 31 :(得分:0)
我遇到了与jdk1.8.0_201相同的问题。当我使JAVA_HOME = C:\ Program Files \ Java \ jdk1.8.0_201并添加“ C:\ Program Files \ Java \ jdk1.8.0_201 \”时,此问题得到解决。 bin中的 path 变量
答案 32 :(得分:0)
答案 33 :(得分:0)
转到控制面板,卸载旧的JDK,然后从https://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html重新安装
问题将被排序。
答案 34 :(得分:0)
如果您安装了多个Java版本并需要保留这些版本,则需要检查以下内容:
答案 35 :(得分:0)
如果问题仍然存在,
检查:
答案 36 :(得分:0)
我卸载了所有Java安装程序,然后重新安装了jdk-8u181-windows-x64。对我来说,避免出现此问题是可行的。
答案 37 :(得分:0)
根据官方Cordova文档,它仅支持JDK 1.8,直到日期(2018年4月)。或者,cordova中的版本检测脚本可能存在问题。
答案 38 :(得分:-1)
对于Ubuntu用户 我一直在观察答案,但是花了我很多时间来收集解决方案。供以后参考,请使用以下命令卸载默认的sudo install
sudo rm -r /usr/lib/jvm/jdk10.0.2
用您安装的我的版本10.0.2替换上面的jdk!
然后转到oracle站点并从here下载tar.gz。
然后使用以下代码在终端上将文件提取到home
文件夹中
tar zxvf jdk-8u201-linux-x64.tar.gz
替换您的Jdk,但使用cordova所需的jdk1.8,就像上面的一样。 然后使用下面的代码设置环境变量
gedit ~/.bashrc
将弹出文本编辑器,然后添加此导出内容!重新启动计算机后,它将正常工作
export JAVA_HOME=/home/abrsh/jdk1.8.0_201
在上面的代码中,abrsh是我的用户名,jdk1.8.0_201是我之前使用tar zxvf
提取的文件夹