更改了JAVA_HOME和PATH,但java版本保持不变

时间:2017-03-09 11:55:43

标签: java bash

我有一台Red Hat Linux机器,我正在尝试使用Java 8。

所以我这样做了:

export JAVA_HOME=/my/path/to/oracle/jdk/1.8/exec
export PATH=$PATH:$JAVA_HOME

但是,如果我运行java -version,我会获得java version "1.7.0_121"

我看了this similar question,但我似乎没有同样的问题。

如果我运行$JAVA_HOME/bin/java -version,我会得到java version "1.8.0_72-b15",因此JAVA_HOME确实指向Java 8。

which java输出/usr/bin/java

那么JAVA_HOME如何指向Java 8,而java -version指向Java 7?

4 个答案:

答案 0 :(得分:3)

我认为您未正确配置PATH,请尝试export PATH=$JAVA_HOME/bin:$PATH

  • $JAVA_HOME/bin添加到$PATH,而不是$JAVA_HOME,因为问题描述中java的完整路径为$JAVA_HOME/bin/java
  • $JAVA_HOME/bin放在$PATH的头部,而不是尾部,否则shell首先会找到原始java中的旧$PATH

答案 1 :(得分:0)

我不知道它是否有帮助,但我在Windows上遇到了类似的问题。

经过一些研究后,我发现旧版java.exe的副本也被放入Windows'system32文件夹。

在你的情况下可能会发生类似的情况...但我无法告诉你linux...上要查找的文件夹可能类似于/sbin/bin,{{1}等等。

文件/usr/bin/的旧版本应位于java.exe变量上的某个目录中。因此,您可以尝试path来获取想法。

同样颠倒顺序echo $PATH(正如其他人所建议的)也可行,因为export PATH=$JAVA_HOME/bin:$PATH上遇到的第一个版本将是新版本(path)。

答案 2 :(得分:0)

文件/usr/bin/java是符号链接。只需将其更改为链接Java 8位置,如下所示:

sudo rm /usr/bin/java
sudo ln -s /path/to/java8/jre/bin/java /usr/bin/java

注意:您可能希望更改所有其他Java符号链接以获得所有Java工具的一致版本(例如javac,javap等)

答案 3 :(得分:0)

使用备选方案

在Linux中管理默认的java二进制文件
someuser@linux:~/tmp> /usr/sbin/alternatives --display java | grep 'priority'
/usr/lib64/jvm/jre-1.7.0-openjdk/bin/java - priority 1705
/usr/lib64/jvm/jre-1.8.0-openjdk/bin/java - priority 1805

Java 8获得更高的优先级。此外,Linux不使用$ JAVA_HOME来确定二进制文件的路径,因此在这种情况下设置它无效。

要使用替代方法设置默认java版本,请参阅以下答案:https://askubuntu.com/questions/121654/how-to-set-default-java-version

相关问题