web-dev-qa-db-ja.com

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です。これは this problem に似ていますが、私の問題は、私が知る限り、パスではありません。

$ echo $PATH
/usr/lib/lightdm/lightdm:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games

ありがとう。

6
TravisThomas

更新:

かなり良い説明があるサイトを見つけました: [〜#〜] link [〜#〜]


リンクから:

次に、いくつかの構成を行う必要があります。
Debianには、_update-alternatives_と呼ばれるJavaのような異なるバージョンのプログラムを維持するためのスクリプトがあります。

 update-alternatives --install/usr/bin/Java java /usr/lib/jvm/jdk1.7.0/bin/Java 1065 
 update-alternatives --install/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 auto mode 
 1/usr/lib/jvm/Java-6-openjdk/jre/bin/Java 1061 manual mode 
 2 /usr/lib/jvm/jdk1.7.0/bin/Java 1065 manual mode 

そして、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#update-alternatives --list Java 
/usr/lib64/jvm /jre-1.6.0-ibm/bin/Java

SLES11#update-alternatives --display Java 
 java-status is auto。
リンクは現在ポイントしています/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です。

Manページには、update-alternativesがディレクトリに使用するパスが記載されています。

 SLES11#pwd 
/etc/alternatives 
 
 SLES11#ll 
 lrwxrwxrwx 1 root root 37 Mar 19 06:03 Java-> /usr/lib64/jvm/jre-1.6.0-ibm/bin/Java
lrwxrwxrwx 1ルートルート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 36 Mar 19 06:03 jre_1.6.0_exports-> /usr/lib64/jvm-exports/jre-1.6.0-ibm
lrwxrwxrwx 1 root root 36 Mar 19 06:03 jre_exports->/usr/lib64 /jvm-exports/jre-1.6.0-ibm
lrwxrwxrwx 1ルートルート28 Mar 19 06:03 jre_ibm-> /usr/lib64/jvm/jre-1.6.0-ibm
lrwxrwxrwx 1ルートルート36 Mar 19 06:03 jre_ibm_exports-> /usr/lib64/jvm-exports/jre-1.6.0-ibm

それらが既にインストールされていて、デフォルトを変更する必要があるだけの場合は、変更を加えます。

 SLES11#update-alternatives --config Java 
 
 Javaを提供するプログラムは1つしかありません
(/ usr/lib64/jvm/jre-1.6.0 -ibm/bin/Java)。構成するものはありません。
 

元の回答:

_/etc/Java_または_/etc/Java-7-openjdk_のようなものを調べると、構成ファイルが表示されます。
_Java.conf_または_jvm.cfg_

これは通常、オプションに設定された構成ファイルに依存します。 Javaの複数のバージョンを同時にインストールし、起動変数を変更して、どちらがデフォルトのJVMになるかを指定できます。

centOSから_Java.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 

ubuntuから_jvm.cfg_

#Java、javacなどのオプションとして使用できるJVMのリスト。
#順序は重要です。このリストの最初はデフォルトのJVMです。
#注これは、このファイルとその形式の両方がサポートされていないことと、
#は将来のリリースで廃止される予定です。
#
#また、
# "-XXaltjvm ="オプションですが、これもサポートされていません
#であり、将来のリリースでは使用できなくなる可能性があります。 。]-client IGNORE 
-hotspot ERROR 
-classic WARN 
-native ERROR 
-green ERROR 
-jamvm KNOWN 
 -cacao KNOWN 
-zero KNOWN 
-shark ALIASED_TO -zero 

Ubuntuには_update-Java-alternatives_というプログラムがあります
これは、manページの最初の数行です

 NAME 
 update-Java-alternatives-jre/sdkインストールの代替手段を更新します
 
構文
 update-Java-alternatives [--jre] [--plugin] [-t | --test | -v | --verbose] 
 -l | --list [] 
 -s | --set 
- a | --auto 
 -h |-?| --help 
 
 DESCRIPTION 
 update-Java-alternativesは、1つのランタイムまたは開発キットに属するすべての選択肢を更新します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 | --set 
登録済みのjre/sdkインストールのすべての代替を、インストールによって提供されるプログラムパスに設定します。

また、Java起動環境の場合の_/etc/profile.d_のリンクも一般的に表示されます。

私の推測では、Javaライブラリは同じ場所にインストールされており、設定ファイルはデフォルトで元のバージョンのままです。新しいJVMパスを指定するだけで十分です。

9
2bc