
我在更新 Java 時遇到問題。我運行的是 Ubuntu 11.10。
我可以執行sudo apt-get install openjdk-7-jdk
並且成功完成。javac -version
是1.7,然而java -version
是1.6。這類似於這個問題但據我所知,我的問題不是路徑。
$ echo $PATH
/usr/lib/lightdm/lightdm:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games
謝謝。
答案1
更新:
找到一個網站,有很好的解釋:關聯
從連結:
然後我們要做一些配置。
Debian 有一個腳本來維護不同版本的程序,例如java
稱為update-alternatives
.
更新替代方案 --install /usr/bin/java java /usr/lib/jvm/jdk1.7.0/bin/java 1065 更新替代方案--安裝/usr/bin/javac javac /usr/lib/jvm/jdk1.7.0/bin/javac 1065
其中 1065 是給定的優先權。
為了檢查我的安裝,我使用 列印的–config
參數:
update-alternatives --config java
There are 2 choices for the alternative java (providing /usr/bin/java).
選擇路徑優先狀態 -------------------------------------------------- ---------- * 0 /usr/lib/jvm/jdk1.7.0/bin/java 1065 自動模式 1 /usr/lib/jvm/java-6-openjdk/jre/bin/java 1061 手動模式 2 /usr/lib/jvm/jdk1.7.0/bin/java 1065 手動模式
並且由於 1065 高於 1061,因此我的機器上將預設使用新安裝的 java 7
java -version
列印:
java版本“1.7.0” Java(TM) SE 運行時環境(內部版本 1.7.0-b147) Java HotSpot(TM) 64 位元伺服器 VM(內部版本 21.0-b17,混合模式)
筆記: 這可能會讓它更容易理解。
SLES11 #哪個java /usr/bin/java SLES11 # 更新替代方案 --list java /usr/lib64/jvm/jre-1.6.0-ibm/bin/java SLES11 # 更新替代方案 --顯示 java java - 狀態為自動。 連結目前指向 /usr/lib64/jvm/jre-1.6.0-ibm/bin/java /usr/lib64/jvm/jre-1.6.0-ibm/bin/java - 優先權 1608 由屬 rmiregistry:/usr/lib64/jvm/jre-1.6.0-ibm/bin/rmiregistry 從屬 tnameserv:/usr/lib64/jvm/jre-1.6.0-ibm/bin/tnameserv 從屬 rmid:/usr/lib64/jvm/jre-1.6.0-ibm/bin/rmid 從屬 jre_exports:/usr/lib64/jvm-exports/jre-1.6.0-ibm 從屬策略工具:/usr/lib64/jvm/jre-1.6.0-ibm/bin/policytool 從屬密鑰工具:/usr/lib64/jvm/jre-1.6.0-ibm/bin/keytool 由屬 jre:/usr/lib64/jvm/jre-1.6.0-ibm 目前「最佳」版本是 /usr/lib64/jvm/jre-1.6.0-ibm/bin/java。
手冊頁給出了 update-alternatives 用於其目錄的路徑。
SLES11#密碼 /etc/替代品 SLES11#ll lrwxrwxrwx 1 root root 37 月 19 日 06:03 java -> /usr/lib64/jvm/jre-1.6.0-ibm/bin/java lrwxrwxrwx 1 root root 28 Mar 19 06:03 jre -> /usr/lib64/jvm/jre-1.6.0-ibm lrwxrwxrwx 1 root root 28 Mar 19 06:03 jre_1.6.0 -> /usr/lib64/jvm/jre-1.6.0-ibm lrwxrwxrwx 1 root root 3月19日36日06:03 jre_1.6.0_exports -> /usr/lib64/jvm-exports/jre-1.6.0-ibm lrwxrwxrwx 1 root root 36 月 19 日 06:03 jre_exports -> /usr/lib64/jvm-exports/jre-1.6.0-ibm lrwxrwxrwx 1 root root 28 Mar 19 06:03 jre_ibm -> /usr/lib64/jvm/jre-1.6.0-ibm lrwxrwxrwx 1 root root 3月19日36日06:03 jre_ibm_exports -> /usr/lib64/jvm-exports/jre-1.6.0-ibm
如果您已經安裝了它們並且只需要更改預設值,請進行更改。
SLES11 # 更新替代方案 --config java 只有1個程式提供java (/usr/lib64/jvm/jre-1.6.0-ibm/bin/java)。沒有什麼可配置的。
原答案:
如果您查看/etc/java
或類似的內容,/etc/java-7-openjdk
您應該會看到設定檔。
java.conf
或者jvm.cfg
這通常(取決於)設定檔設定您的選項。您可以同時安裝多個版本的 java,並變更啟動變數以影響預設 JVM。
來自 CentOSjava.conf
# 如果您安裝了基本 JRE 套件 #(例如java-1.6.0-openjdk): #JAVA_HOME=$JVM_ROOT/jre # 如果你安裝了 devel JDK 套件 #(例如java-1.6.0-openjdk-devel): #JAVA_HOME=$JVM_ROOT/java
從Ubuntujvm.cfg
# 可用作 java、javac 等選項的 JVM 清單。 # 順序很重要-這個清單中的第一個是預設的 JVM。 # 請注意,該文件及其格式均不受支援 # 將在未來版本中消失。 # # 您也可以使用以下命令在任意位置選擇 JVM # “-XXaltjvm=”選項,但這也不支持 # 並且可能不會在未來版本中提供。 # -伺服器已知 - 客戶端忽略 -熱點錯誤 -經典警告 -本機錯誤 -綠色錯誤 -jamvm 已知 -可可已知 - 已知零 -shark ALIASED_TO -零
在 Ubuntu 上有一個程式叫做update-java-alternatives
This is the top幾lines of the man page
姓名 update-java-alternatives - 更新 jre/sdk 安裝的替代方案 概要 update-java-alternatives [--jre] [--plugin] [-t|--test|-v|--verbose] -l|--列表[] -s|--設定 -a|--自動 -h|-?|--幫助 描述 update-java-alternatives 更新屬於 Java 語言的一個執行時期或開發工具包的所有替代項。一個包確實提供了這些 /usr/lib/jvm/..jinfo 中其替代方案的資訊。
root@ubuntul:/# update-java-alternatives -l java-1.6.0-openjdk 1061 /usr/lib/jvm/java-1.6.0-openjdk
-s|--設定 將註冊的 jre/sdk 安裝的所有替代項設定為安裝提供的程式路徑。
/etc/profile.d
我通常也會看到java 啟動環境的連結。
我的猜測是你的java庫安裝在同一個地方,並且配置文件仍然預設為原始版本。您只需要提供新的 JVM 路徑。