RedHat系的系统环境中安装有多个版本的Java是一个比较普遍的现象。比如有历史程序运行在Java1.6上,部署的Hadoop套件运行在Java1.8上,因为其他目的需要使用Jshell,又需要使用Java9。
在任何特定的时间,在终端中输入
java -version
只可能指向其中的一个Java版本。
完全人工去维护java
的指向是一件麻烦的事情,工具alternatives
协助解决了这个问题,该工具源于Debain,所以使用也和Debain上差不多。
alternatives --config java
There are 3 programs which provide 'java'.
Selection Command
-----------------------------------------------
1 java-11-openjdk.x86_64 (/usr/lib/jvm/java-11-openjdk-11.0.5.10-0.el7_7.x86_64/bin/java)
*+ 2 java-1.8.0-openjdk.x86_64 (/usr/lib/jvm/java-1.8.0-openjdk-1.8.0.232.b09-0.el7_7.x86_64/jre/bin/java)
3 java-latest-openjdk.x86_64 (/usr/lib/jvm/java-13-openjdk-13.0.1.9-2.rolling.el7.x86_64/bin/java)
Enter to keep the current selection[+], or type selection number:
通过输入需要即可指定默认的Java运行时。
实际上 alternatives
本身是一个通用的对可互相交换替代的程序进行选择的程序,不是只能用户管理Java,在系统的包被安装和移除的时候,相应的程序(准确上是叫链接组,alternatives是基于符号链接工作的)会被向/从alternatives
中添加或者移除。
alternatives --list
可以列出所有可以配置的程序。