我在Windows 10上,我在Windows上使用Ubuntu上的Bash。
我想使用ionic build android
,但它给了我以下错误:
我实际安装了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版本“9-internal”
OpenJDK Runtime Environment(build 9-internal + 0-2016-04-14-195246.buildd.src)
OpenJDK 64位服务器VM(内置9-internal + 0-2016-04-14-195246.buildd.src,混合模式)
所以Bash无法识别我的Java版本。有趣的是,java.exe -version
给出了正确的输出:
java版“1.8.0_121”
Java(TM)SE运行时环境(版本1.8.0_121-b13)
Java HotSpot(TM)64位服务器VM(版本25.121-b13,混合模式)
使用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
?或者您建议使用其他解决方案?
答案 0 :(得分:0)
在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'
如果我没记错的话,必须在别名内转义双引号。我不是在电脑前测试,所以尝试使用和不使用转发。