java版本无法识别
我在Windows 10上,在Windows上使用Ubuntu上的Bash。 我想用ionic build android
,但它给了我下面的错误:java版本无法识别
我实际安装JDK 1.8.0_121并设置JAVA_HOME
及其PATH
如下我~/.bash_profile
:
export JAVA_HOME=/mnt/c/"Program Files"/Java/jdk1.8.0_121
export PATH=${PATH}:/mnt/c/"Program Files"/Java/jdk1.8.0_121/bin
当我使用java -version
时,会发生以下输出:
openjdk version "9-internal"
OpenJDK Runtime Environment (build 9-internal+0-2016-04-14-195246.buildd.src)
OpenJDK 64-Bit Server VM (build 9-internal+0-2016-04-14-195246.buildd.src, mixed mode)
因此Bash不能识别我的Java版本。有趣的是,这java.exe -version
提供了正确的输出:
java version "1.8.0_121"
Java(TM) SE Runtime Environment (build 1.8.0_121-b13)
Java HotSpot(TM) 64-Bit Server VM (build 25.121-b13, mixed mode)
我使用的是Windows' CMD>java -version
时得到相同的(正确)的输出。
在/Windows/System32
或/syswow64
中没有任何java文件。
我想我安装了“openjdk版本9”,这是因为java -version
直接通过apt install openjdk-9-jdk-headless
有一天显示。这可能会导致这种麻烦吗?因为当我尝试update-alternatives --config java
我得到以下的输出:(没有选项来选择jdk1.8.0_121)
还是我必须设置JAVA_HOME
及其以不同的方式PATH
?或者你有什么其他解决方案?
在bash中,运行which java
来检查哪个java版本的bash正在运行。
也许它不会是1.8,那是因为(我相信)在你的PATH
中,openjdk 9 dir在jdk 1.8之前。
因此请检查您的PATH
变量(通过执行echo $PATH
)并查看目录的顺序。
如果OpenJDK的JDK目录1.8之前出现(它可能不会,因为你设置1.8 DIR是最后一个),你可以只设置PATH
这样:
export PATH=/mnt/c/"Program Files"/Java/jdk1.8.0_121/bin:${PATH}
那么bash将看对于jdk 1.8 dir中的java
之前的任何其他地方。
如果这不起作用,你可以让一个别名(不是一个完美的解决方案,我承认):
alias java='/mnt/c/\"Program Files\"/Java/jdk1.8.0_121/bin/java'
# or without escaping double quotes (not sure which one works)
alias java='/mnt/c/"Program Files"/Java/jdk1.8.0_121/bin/java'
如果我没有记错,双引号必须别名内逃脱。我不是在电脑前测试,所以试着用,不用转义。
(对不起,对于双重发布...)如您所说,echo $ PATH现在首先显示jdk1.8方向。不幸的是'java -version'再次导致openjdk9。'哪个java'仍然给/ usr/bin/java回来。你有什么其他的建议? –
我更新了答案 – 2017-04-18 10:42:27
我试了两个别名。第一个错误的语法,我想。我必须在第二个末尾添加“.exe”。之后'java -version'返回了正确的版本。然后我再次尝试'离子模拟android',它返回与我的问题(“错误:要求检查失败,JDK 1.8或更高版本”)相同的错误。之后,在使用别名的同时,'which java'命令仍然像以前一样以exactely的形式返回'/ usr/bin/java'。这个目录似乎是Ubuntu子系统的一部分。你能想出一个解决方案吗?还是你有其他想法? –