2017-03-09 46 views
1

我有一個Red Hat Linux的機器,我想使用的Java 8變更JAVA_HOME和PATH,但Java版本是一樣的

所以我這樣做:

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呢?

+2

搜索:

要使用的替代品是指這個答案設爲默認的Java版本'出口PATH = $ JAVA_HOME:$ PATH' – sat

+1

什麼'ls -l命令在/ usr/bin中/ java'說明了什麼? –

+0

我試過'export PATH = $ JAVA_HOME:$ PATH',但沒有任何變化。 – o1ctav

回答

3

我想你沒有配置你的PATH正確,嘗試export PATH=$JAVA_HOME/bin:$PATH

  • 添加$JAVA_HOME/bin$PATH,不$JAVA_HOME,因爲java的完整路徑是有問題的說明$JAVA_HOME/bin/java
  • 把你的$JAVA_HOME/bin置於$PATH的頭部,而不是尾部,否則原始的$PATH中的舊java將始終由shell首先找到。
+0

您可能想要添加*爲什麼*這將有所幫助。 –

+0

我已經添加了更多描述:-) – shizhz

+0

默認的java二進制文件必須在Linux中使用替代方法進行管理。 –

0

我不知道它是否有幫助,但我在Windows上有類似的問題。

經過一番研究,我發現java.exe的舊版本的副本也被放入Windows'system32文件夾。

也許類似的東西在你的情況正在發生......但我不能告訴你找對linux...可能類似於/sbin/bin/usr/bin/

文件的舊版本哪個文件夾java.exe應位於path變量上的某個目錄中。所以,你可以嘗試echo $PATH來獲得想法。

也可以正常工作,因爲在path上遇到的第一個版本是新版本(1.8)。

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的,等等)

+0

默認Java版本必須使用替代方法管理,而不是手動管理。 –

+0

默認的Java版本可以手動管理或使用'alternatives',這種方式最適合你。 – acm

0

默認的Java二進制使用替代

[email protected]:~/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中進行管理。此外,Linux不使用$ JAVA_HOME來確定二進制文件的路徑,因此在此情況下將其設置爲無效。 https://askubuntu.com/questions/121654/how-to-set-default-java-version

+0

這不回答OP的問題,即如何從Java版本更改爲其他版本。 – acm

+1

修正了這個問題,給我回票:D –

相關問題