java版本无法识别

时间:2017-04-17 11:41:18

标签: java bash ionic-framework

我在Windows 10上,我在Windows上使用Ubuntu上的Bash。 我想使用ionic build android,但它给了我以下错误:

logic-error

我实际安装了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的选项)

Output

或者我是否必须以不同的方式设置JAVA_HOME及其PATH?或者您建议使用其他解决方案?

1 个答案:

答案 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'

如果我没记错的话,必须在别名内转义双引号。我不是在电脑前测试,所以尝试使用和不使用转发。