【Java】使用多个版本的Java的切换方法

首先

在使用多个版本的Java并切换使用时,有多种方法可供选择,如使用jenv等。在这里,我们介绍使用传统的alternatives方法。

妾想,若在以下场景中,略知一二alternatives命令名,或可获益匪浅。

    • 古いJavaがインストールされている本番環境に新しいJavaをインストールしたいけれども、不具合が発生した場合に古いJavaへ切り戻したい時。

 

    • テスト環境で複数バージョンのJavaを利用したい時。

 

    OracleJDKからOpenJDKにサッと切り替えたい時。

“alternatives命令是什么呢?”

“alternatives” 是 CentOS 中內建的一個指令。

当您在man命令中搜索alternatives时,会发现它被描述为“通过维护符号链接来确定默认命令”。尽管用英语描述可能有些晦涩,但它实际上是一种非常优秀的命令,可利用符号链接切换具有相似功能或不同版本的软件。

换句话说,不仅仅限于Java,可以在各种命令中应用。

考试环境

    • OS:CentOS 6.10

 

    • インストール済みのJava:Java12(Oracle JDK)

RPMでインストールしています。

[root@akagi ~]# java -version
java version "12.0.1" 2019-04-16
Java(TM) SE Runtime Environment (build 12.0.1+12)
Java HotSpot(TM) 64-Bit Server VM (build 12.0.1+12, mixed mode, sharing)

预先准备

安装新的Java(OpenJDK)。

    1. 从OpenJDK的网站下载Java12的tar.gz文件。

 

    1. 将tar.gz文件放置在适当的目录(在这里是/usr/local)下并进行解压以完成安装。

安装已经完成,但路径未设置。

[root@akagi ~]# cd /usr/local/
[root@akagi local]# tar zxvf openjdk-12.0.1_linux-x64_bin.tar.gz 
[root@akagi local]# ls | grep jdk
jdk-12.0.1
openjdk-12.0.1_linux-x64_bin.tar.gz

使用alternatives命令切换Java。

确认当前的状态

alternatives –config {総称名(generic name)}で、現在の状態を対話モードで確認できます。

総称名は”java”や”perl”など、実際に利用しているコマンドを指定します。

ここでは”java”に対応するコマンドが1つしかないので、[Enter]を押して現在の設定を維持したまま対話モードを抜けます。

[root@akagi local]# alternatives --config java

1 プログラムがあり 'java' を提供します。

  選択       コマンド
-----------------------------------------------
*+ 1           /usr/java/jdk-12.0.1/bin/java

Enter を押して現在の選択 [+] を保持するか、選択番号を入力します:

命令的注册~切换使用的JVM

alternatives –install {リンク} {総称名(generic name)} {パス} {優先度}と入力することで、選択肢となるコマンドを登録できます。

存在しない”総称名”を指定した場合、”総称名”のグループが新たに作成されます。
既に存在する”総称名”を指定した場合、同じ”総称名”のグループ内に登録されます。
リンクは、総称名のコマンドを実行した際に呼ばれるシンボリックリンクで、”/usr/bin/java”や”/usr/local/bin/perl”などを指定します。
パスは、総称名のコマンドを実行した際に実際に実行されるコマンドです。

再びalternatives –config javaと入力して、呼び出されるJVMを切り替えます。

[+]は現在選択されているもので、この時点ではOracleJDKが選択状態となっています。
そこで、最後に要求される「選択番号」で2(2番)を入力して、OpenJDKに切り替えます。

[root@akagi local]# alternatives --install /usr/bin/java java /usr/local/jdk-12.0.1/bin/java 2
[root@akagi local]# alternatives --config java

2 プログラムがあり 'java' を提供します。

  選択       コマンド
-----------------------------------------------
*+ 1           /usr/java/jdk-12.0.1/bin/java
   2           /usr/local/jdk-12.0.1/bin/java

Enter を押して現在の選択 [+] を保持するか、選択番号を入力します:2

确认设定后的状态

    • 設定完了後にalternatives –config javaと入力して、現在選択されているJVMを確認します。

この時点では2番(OpenJDK)が選択されています。

[root@akagi local]# alternatives --config java

2 プログラムがあり 'java' を提供します。

  選択       コマンド
-----------------------------------------------
*  1           /usr/java/jdk-12.0.1/bin/java
 + 2           /usr/local/jdk-12.0.1/bin/java

Enter を押して現在の選択 [+] を保持するか、選択番号を入力します:
    最後にJavaのバージョンを表示して、実際に動作しているのがOpenJDKであることを確認します。
[root@akagi local]# java -version
openjdk version "12.0.1" 2019-04-16
OpenJDK Runtime Environment (build 12.0.1+12)
OpenJDK 64-Bit Server VM (build 12.0.1+12, mixed mode, sharing)

其他

    • 以下の記事によると、CentOS7系でもalternativesコマンドでJavaのバージョンを切り替えられるようです。

CentOS7系+JDK-9.0.1+JDK1.8.0+alternativesで切り替え

请提供参考网址。

    CentOSで「alternatives」コマンドを使用してJavaのバージョンを切り替える
广告
将在 10 秒后关闭
bannerAds