複数のJavaバージョンを切り替える


65

Ubuntu 14.04にAndroid Studioをインストールしているときに、Javaバージョン(javac 1.7.0_79)が問題を引き起こしているというメッセージが表示されます。Javaの新しいOracleバージョンをインストールする方法のソリューションを見つけました。

sudo apt-add-repository ppa:webupd8team/java
sudo apt-get update
sudo apt-get install oracle-java8-installer

ただし、これopen-jdkにより、既存のバージョンのJava が上書きされる可能性があります。どのプログラムがJavaに依存しているかわからないので、これらのプログラムがクラッシュするのではないかと心配しています。

apt-get以前のJavaを上書きしないようにする方法はありますか?私は基本的に両方をインストールし、必要なバージョンに応じて手動で切り替えることができるようにします。

回答:


83

Apt-getは既存のJavaバージョンを上書きしません。

インストールされているJavaバージョンを切り替えるには、update-java-alternatives次のコマンドを使用します。

すべてのJavaバージョンをリストします。

update-java-alternatives --list

Javaバージョンをデフォルトとして設定(ルート権限が必要):

sudo update-java-alternatives --set /path/to/java/version

... where /path/to/java/versionは、前のコマンドでリストされたものの1つです(例/usr/lib/jvm/java-7-openjdk-amd64)。


追加情報:

update-java-alternativesDebianの使用便利なツールである代替システムをupdate-alternatives指定されたJavaバージョンへのリンクの束を設定する)(例えばjavajavac、...)。


1
これにより、java -versionはjava8になりましたが、JAVA_HOMEはまだ7に設定されていました:(
Nenotlep

tqこれは私の問題も解決します。@Nenotlepは、.bashrcまたは/ etc / environmentのいずれかで環境変数を手動で編集します
-nuttynibbles

update-java-alternatives私には利用できませんでした。そのコマンドをに置き換えましたupdate-alternatives java
-nofinator

java実行可能ファイルのみに影響する@nofinator 。どのUbuntuバージョンを使用していますか?
ダンゼル

1
@Nenotlepを変更JAVA_HOMEするには、次のコマンドを実行する必要があります source /etc/environment
。– janb

48

つかいます

sudo update-alternatives --config java

現在アクティブなバージョンがマークされているすべてのインストール済みバージョンをリストし、切り替えるためのダイアログを提供します。

There are 3 choices for the alternative java (providing /usr/bin/java).

Selection    Path...
------------------------------------------------------------
  0            /usr/lib/jvm/java-9-oracle/bin/java...
* 1            /usr/lib/jvm/java-7-oracle/jre/bin/java...
  2            /usr/lib/jvm/java-8-oracle/jre/bin/java...
  3            /usr/lib/jvm/java-9-oracle/bin/java...

Press <enter> to keep...[*], or type selection number: 

つかいます

export JAVA_HOME="$(jrunscript -e 'java.lang.System.out.println(java.lang.System.getProperty("java.home"));')"

$JAVA_HOME現在のアクティブバージョンから設定するには


受け入れられた回答で@danzelが述べたように、これはjava実行可能ファイルにのみ影響し、構成の他の部分には影響しません。使用update-java-alternatives可能な場合。
プレメクブラダ

5

@muetからの回答に基づいて、私はこれがシームレスに動作することがわかりました:

これを追加~/.bashrc

export JAVA_HOME="$(jrunscript -e 'java.lang.System.out.println(java.lang.System.getProperty("java.home"));')"

エイリアスに追加:

alias useJava8='yes | sudo apt-get install oracle-java8-set-default && source ~/.bashrc'
alias useJava7='yes | sudo apt-get install oracle-java7-set-default && source ~/.bashrc'

次に、次のもののみを使用して同じシェル内で切り替えることができます:useJava7またはuseJava8


エイリアスを永続的にするために、1つは、〜/ .bashrcの中で、ここで詳細にそれらを置くことができるaskubuntu.com/questions/17536/...
コンスタンチンZyubin

E:パッケージoracle-java7-set-defaultが見つかりません
Prakash Pandey

異なるJavaバージョンをインストール、使用、および切り替える最も明確な方法は、SDKMANを使用することです!こちらをご覧ください:sdkman.io/usage.html
brianjohnsen

最近、JAVA_HOMEを設定する別のコマンドに出くわし、まだ試していない.bashrcexport JAVA_HOME=$(dirname $(dirname $(readlink -f $(which java))))
ThiamTeck

3

Javaの構成

を使用して、コマンドラインで使用するデフォルトのバージョンを構成できます。これによりupdate-alternatives、さまざまなコマンドで使用されるシンボリックリンクが管理されます。

sudo update-alternatives --config java

出力は次のようになります。

There are 5 choices for the alternative java (providing /usr/bin/java).

  Selection    Path                                            Priority   Status
------------------------------------------------------------
* 0            /usr/lib/jvm/java-8-openjdk-amd64/jre/bin/java   1081      auto mode
  1            /usr/lib/jvm/java-6-oracle/jre/bin/java          1         manual mode
  2            /usr/lib/jvm/java-7-oracle/jre/bin/java          2         manual mode
  3            /usr/lib/jvm/java-8-openjdk-amd64/jre/bin/java   1081      manual mode
  4            /usr/lib/jvm/java-8-oracle/jre/bin/java          3         manual mode
  5            /usr/lib/jvm/java-9-oracle/bin/java              4         manual mode

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

これで、デフォルトとして使用する番号を選択できます。これは、コンパイラ(javac)、ドキュメントジェネレータ(javadoc)、JAR署名ツール(jarsigner)など、他のJavaコマンドでも実行できます。次のコマンドを使用して、カスタマイズするコマンド入力できます。

sudo update-alternatives --config command

JAVA_HOME環境変数の設定

Javaサーバーなどの多くのプログラムは、JAVA_HOME環境変数を使用してJavaのインストール場所を決定します。

希望するインストールからパスをコピーしてから、Sublime Textまたはお気に入りのテキストエディターを使用して/ etc / environmentを開きます。

sudo subl /etc/environment

このファイルの最後に次の行を追加し、強調表示されたパスを独自のコピーされたパスに置き換えてください。

JAVA_HOME="/usr/lib/jvm/java-8-oracle"

ファイルを保存して終了し、再読み込みしますsource /etc/environment
次のコマンドを実行して、環境変数が設定されているかどうかをテストできますecho $JAVA_HOME。これにより、設定したパスが返されます。

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