web-dev-qa-db-ja.com

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

Ubuntu 14.04にAndroid St​​udioをインストールしているときに、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を上書きしないようにする方法はありますか?基本的に両方をインストールし、必要なバージョンに応じて手動で切り替えられるようにしたいと思います。

61
mcExchange

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

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

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

update-Java-alternatives --list

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

Sudo update-Java-alternatives --set /path/to/Java/version

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


update-Java-alternativesは、Debianの 代替システムupdate-alternatives)を使用して、指定されたJavaバージョン(たとえば、Javajavac、...)。

77
danzel

つかいます

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を設定するには

44
muet

@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'

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

4
brianjohnsen

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コマンドでも実行できます。 、 もっと。次のコマンドを使用して、カスタマイズするcommandを入力できます。

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。これにより、設定したパスが返されます。

3
naXa