我有一台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?
答案 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