我正在嘗試JAVA_HOME
在 Ubuntu 作業系統中進行設定。我已經複製jdk 1.7
並/usr/lib/jvm
設置JAVA_HOME
在/etc/profile
文件中。
資料夾內容/usr/lib/jvm
如下:
shekhar@ubuntu:~$ ls /usr/lib/jvm/
default-java java-1.6.0-openjdk java-6-openjdk java-6-openjdk-i386 jdk1.7.0_01
java-1.5.0-gcj-4.6 java-1.6.0-openjdk-i386 java-6-openjdk-common java-7-openjdk-i386
文件的最後幾行/etc/profile
如下:
export JAVA_HOME=/usr/lib/jvm/jdk1.7.0_01
export PATH=$PATH:$JAVA_HOME/bin
完成所有這些後,當我運行java -version
命令時,我得到以下輸出:
shekhar@ubuntu:~$ java -version
java version "1.6.0_24"
OpenJDK Runtime Environment (IcedTea6 1.11.4) (6b24-1.11.4-1ubuntu0.12.04.1)
OpenJDK Server VM (build 20.0-b12, mixed mode)
當我運行ls -lah
命令時,我得到以下輸出:
shekhar@ubuntu:~$ ls -lah /usr/bin/java
lrwxrwxrwx 1 root root 22 Sep 29 09:58 /usr/bin/java -> /etc/alternatives/java
shekhar@ubuntu:~$ ls -lah /etc/alternatives/java
lrwxrwxrwx 1 root root 45 Sep 29 09:58 /etc/alternatives/java -> /usr/lib/jvm/java-6-openjdk-i386/jre/bin/java
誰能告訴我我錯過了什麼?為什麼Ubuntu仍然指向open jdk而不是我的jdk 7?
PS:我看過這個類似的問題及其答案,但該問題與 Windows 作業系統有關,而不是與 Ubuntu 相關,因此我為 Ubuntu 重新發布了這個類似的問題。
答案1
您設定了 JAVA_HOME 環境變量,然後使用它來設定 PATH。但是,您設定的路徑也包含現有路徑。本質上,您只是在現有路徑中添加了其他內容。
路徑末端新增了 JDK1.7 的路徑。當您在命令列中鍵入「java --version」時,系統會從頭到尾搜尋路徑,直到找到包含命令「java」的路徑。因此,您看到的是其他 Java 版本之一的版本輸出。
我在 Ubuntu 上通常做的是查看我的路徑:
echo $PATH
然後在開頭附近尋找可能的 JVM 路徑。那時,您有多種選擇來解決此問題:
建立一個符號鏈接,將系統指向新的 Java 路徑。
刪除舊的 Java 版本並將其從您的路徑中刪除。
我會選擇選項 2。
答案2
我遇到了同樣的問題,答案隱藏在 PATH 中:
執行“$ env | grep java”顯示:
PATH=/u01/app/oracle/product/11.2.0/xe/bin:/home/rivaldo/bin:/usr/lib/lightdm/lightdm:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/java/jdk1.6.0_14/bin:/home/rivaldo/bin/eclipse.JEE.Kepler.64
JAVA_HOME=/usr/local/java/jdk1.6.0_14
JDK_HOME=/usr/local/java/jdk1.6.0_14
但運行“java -version”仍然顯示:
java version "1.7.0_40"
Java(TM) SE Runtime Environment (build 1.7.0_40-b43)
Java HotSpot(TM) 64-Bit Server VM (build 24.0-b56, mixed mode)
我發現我的路徑在“/java/jdk1.6.0_14/bin”之前有“/usr/bin”並執行“ll /usr/bin | grep java”我得到:
lrwxrwxrwx 1 root root 39 Jul 31 08:29 /etc/alternatives/java -> /usr/lib/jvm/java-7-oracle/jre/bin/java*
我將符號鏈接更改為正確的鏈接,問題就解決了。您也可以更改路徑中的順序:
從
export PATH=$PATH:$JAVA_HOME/bin
到
export PATH=$JAVA_HOME/bin:$PATH
答案3
我個人在新安裝的 Ubuntu 12.04 上遇到了完全相同的問題。我所要做的就是使用以下命令卸載特定的軟體包:
sudo apt-get remove openjdk-6-jre-headless
這刪除了 /etc/alternatives 中的連結並將其更新為已安裝的 java 1.7
只是想分享,因為這完成了 jmort253 答案中的第 2 點。