デフォルトのJavaバージョンを設定する方法は?


125

この質問に記載されているすべての指示に従いましたが、最後の部分でいくつかの問題が発生しています。

私は実際にjavaのバージョン6.22を持っていますが、バージョン6.30に更新したいと思います。

上記の回答で指摘されているスクリプトがJava 5からJava 6に更新されるため、抽出されたディレクトリjava-6-oracleを移動した後、/usr/lib/jvm私は何をすべきかわかりません。

わかりやすくするためにls、dir を実行した場合の出力は/usr/lib/jvm次のとおりです。

$ ls -l /usr/lib/jvm
total 8 
lrwxrwxrwx  1 root root   14 2011-07-12 15:18 default-java -> java-6-openjdk
lrwxrwxrwx  1 root root   14 2011-07-12 12:19 java-1.6.0-openjdk -> java-6-openjdk 
drwxr-xr-x 10 root root 4096 2012-04-12 12:06 java-6.31-oracle 
drwxr-xr-x  7 root root 4096 2012-02-24 14:43 java-6-openjdk

私は今どうすればいい?


追加された部分

@fossfreedomの提案の下で、とにかくスクリプトを実行し、実際にJavaバージョンを更新しました。

実際、コマンドjava -version出力を実行すると次のようになります。

$ java -version
java version "1.6.0_31"
Java(TM) SE Runtime Environment (build 1.6.0_31-b04)
Java HotSpot(TM) Server VM (build 20.6-b01, mixed mode)

まだ問題があります。Irun javac -versionを実行すると、古いバージョンがインストールされます:

$ javac -version
javac 1.6.0_22

このリンクでテスターを使用すると、バージョンが

Java Version 1.6.0_22 from Sun Microsystems Inc.

何が悪いの?

Javaランタイム環境は更新されたようですが、ブラウザ用のJavaコンパイラとJavaプラグインは更新されていません。

どうすれば更新できますか?


その他の追加部分

sudo update-alternatives --config java 次の出力を返します

$ sudo update-alternatives --config java
There are 2 choices for the alternative java (providing /usr/bin/java).

  Selection    Path                                      Priority   Status
------------------------------------------------------------
* 0            /usr/lib/jvm/java-6.31-oracle/bin/java     1062      auto mode
  1            /usr/lib/jvm/java-6-openjdk/jre/bin/java   1061      manual mode
  2            /usr/lib/jvm/java-6.31-oracle/bin/java     1062      manual mode

Press enter to keep the current choice[*], or type selection number:

これらは、JREがバージョン6.31に正しく更新され、JavaコンパイラーとJavaブラウザープラグインに問題があるという事実から理にかなっています。

何か案は?


@fossfreedom私はそれを試していないので、Java 5から6にアップロードするために明示的に書かれているので、とにかく良いアイデアではないと思いましたか?
マッテオ

1
うーん-webupd8スクリプトが0.5bであることを混乱させるかもしれませんか?これはスクリプトのバージョンです-Javaバージョンを参照しません。試してみる。スクリプトを実行すると、ウィンドウがどのように見えるかのスクリーンショットを見ることができます。
fossfreedomの

@fossfreedomええ、私を完全に混乱させました; DIがスクリプトを実行しました!!私を助けるために多くをthks ..問題の編集内容をチェック
マッテオ

なんて不思議なのか...それに遭遇したことはない。とにかく-すぐ下の答えを見てください-あなたはsudo update-alternatives例のようにできるはずです。
fossfreedomの

@fossfreedomが再び質問を更新しました!
マッテオ

回答:


104

最初の質問について:

おそらく、webupd8スクリプトが0.5bであると混乱するかもしれません。これはスクリプトのバージョンです-Javaバージョンを参照しません。

さらにjavacバージョンの設定。

javacコンパイラのパスを明示的に指定する必要があると思います

すなわち

sudo update-alternatives --install "/usr/bin/javac" "javac" "/usr/lib/jvm/java-6.31-oracle/bin/javac" 1

に続く:

sudo update-alternatives --config javac

java chromeプラグインのセットアップに関して。

マスター質問:

Oracle JDK 6をインストールするにはどうすればよいですか?

この情報が含まれます-フォルダー構造がわずかに異なるため、リンクコマンドは次のようになります。

ln -s /usr/lib/jvm/java-6.31-oracle/jre/lib/i386/libnpjp2.so ~/.mozilla/plugins/

これはそれ自体でコンパイラを変更するだけです-私のシステムでは82である、Java関連のすべての代替の切り替えを処理するupdate-java-alternativesについては、以下の回答を参照してください。
グレッグ

55

参照してください。これを、走る

sudo  update-java-alternatives --list

マシン上のすべてのJavaインストールを名前とディレクトリで一覧表示してから実行する

sudo  update-java-alternatives --set [JDK/JRE name e.g. java-8-oracle]

使用するJRE / JDKを選択します。

Javaタスクごとに異なるJDK / JREを使用する場合は、update-alternativesを実行して、一度に1つのJava実行可能ファイルを構成できます。あなたは走ることができます

sudo  update-alternatives --config java[Tab]

設定可能なJavaコマンド(java、javac、javah、javawsなど)を確認します。その後

sudo  update-alternatives --config [javac|java|javadoc|etc.]

そのJavaタスク/コマンドを特定のJDK / JREに関連付けます。

あなたはまた、いくつかのアプリケーションのためのJAVA_HOMEを設定する必要がありますから、この答えはあなたが使用することができます

export JAVA_HOME=$(readlink -f /usr/bin/java | sed "s:bin/java::")

JREの場合、または

export JAVA_HOME=$(readlink -f /usr/bin/java | sed "s:jre/bin/java::")

JDKの場合。


25

パッケージのupdate-java-alternativesコマンドjava-common*.jinfoそれが使用するファイルを見てみるべきだと思います。これにより、(JDK、JREなどに関係なく)Javaインストールを完全に切り替えることができるはずです。


2
私はupdate-java-alternativesそれを試してみましたjava -versionが、リンク$JAVA_HOMEはまだ間違っていました...私はそれを手動で変更しましたがupdate-java-alternatives、その点で欠けているものがあるのではないかと思います。
アレクシスウィルケ

7

ubuntu / linuxでは、次を使用してJavaバージョンを切り替えることができます

update-alternatives --config java

ただし、その前にバージョンをインストールする必要があります。

このスクリプト(./install-java.sh)を使用して、複数のJVMをインストールできます。

#!/bin/sh
(
lookforJdks=$PWD
echo "Directory: $lookforJdks"
jdks=`test -e ./javac || find $lookforJdks -type d -iname '*jdk1.*' 2> /dev/null`
#set -e
echo 'which jdk do you want to choose? looking for jdks. This might take a while'
echo "$jdks" | awk '{printf("%5d : %s\n", NR,$0)}'
read choose
test -e ./javac || cd `echo "$jdks" | tr '\n' ',' | cut -d',' -f $choose`/bin
for e in appletviewer extcheck idlj jar jarsigner java javac javadoc javah javap jconsole \
 jdb jhat jinfo jmap jps jrunscript jsadebugd jstack jstat jstatd native2ascii rmic \
 schemagen serialver wsgen wsimport xjc jvisualvm jmc; do sudo update-alternatives \
 --install /usr/bin/$e $e $(readlink -f ./$e) 100; done
)

echo "RUN update-alternatives --config java"

JVMを解凍したフォルダーにこのスクリプトを配置し、実行します:

/opt/install-java.sh

次の使用:

update-alternatives --config java

1

javac javaws javadocまたはその他のjava関連のコマンドの代替セットを手動で設定する場合、java代替のスレーブにすることができます。

sudo update-alternatives --install "/usr/bin/java" "java" "/opt/jdk1.8.0_74/bin/java" 0 --slave "/usr/bin/javadoc" "javadoc" "/opt/jdk1.8.0_74/bin/javadoc"


update-alternatives: updating alternative /opt/jdk1.8.0_74/bin/java because link group java has changed slave links


:/opt/jdk1.8.0_74$ sudo update-alternatives --display java

java-自動モードリンクの最適なバージョンは/opt/jdk1.8.0_74/bin/javaリンクは現在/opt/jdk1.8.0_74/bin/javaリンクを指していますjavaは/ usr / bin / javaスレーブjavadocは/ usr / binです/ javadoc /opt/jdk1.8.0_74/bin/java-優先度0のスレーブjavadoc:/opt/jdk1.8.0_74/bin/javadoc

/opt/jdk1.8.0_74/をjdkがインストールされているディレクトリに変更します。


0

/etc/environmentテキストエディタで開き、次の行を追加します。

JAVA_HOME="usr/lib/jvm/open-jdk 

-Javaパスは異なる可能性があります。
次のコマンドを実行して、ソースを使用して変数をロードします。

source /etc/environment

次に、次のコマンドを実行して変数を確認します。

echo $JAVA_HOME

このパスを設定して、次のコマンドを実行します。

sudo  update-java-alternatives --list

デフォルトのJavaバージョンを選択します。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.