安裝openjdk-7-jdk不會更新java(仍然是1.6版本)

安裝openjdk-7-jdk不會更新java(仍然是1.6版本)

我在更新 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 路徑。

相關內容