有时为了需要,会在系统中安装多个Java。网上关于这个问题的解决都是同一种思路,即利用sudo update-alternatives
进行配置。
我这里也是使用这种方法,只是编写了一个脚本,使得操作起来方便一些。
多个Java的安装
我是在Oracle上下载的压缩包进行解压的。解压完成之后,我们需要将其配置到系统当中,如下
install_java.sh
#!/bin/bash
if [ $# -eq 0 ]
then
echo "Provide the jdk path to be installed!"
exit
fi
if [ ! -e "${1}" ]
then
echo "Provided jdk: ${1} does not exist!"
exit
fi
JDK_PATH=${1}
INSTALL_PRIORITY=300
# Remove last '/'
if [ ${1:0-1:1} = '/' ]
then
JDK_PATH=${1%/*}
fi
if [ $# -gt 1 ]
then
INSTALL_PRIORITY=${2}
fi
echo "You specify jdk: ${JDK_PATH}"
sudo update-alternatives --install /usr/bin/java java ${JDK_PATH}/bin/java ${INSTALL_PRIORITY}
sudo update-alternatives --install /usr/bin/javac javac ${JDK_PATH}/bin/javac ${INSTALL_PRIORITY}
sudo update-alternatives --install /usr/bin/javah javah ${JDK_PATH}/bin/javah ${INSTALL_PRIORITY}
sudo update-alternatives --install /usr/bin/javaws javaws ${JDK_PATH}/bin/javaws ${INSTALL_PRIORITY}
sudo update-alternatives --install /usr/bin/javap javap ${JDK_PATH}/bin/javap ${INSTALL_PRIORITY}
这个脚本有2个参数:
1. jdk的路径(必须)
2. 安装此jdk的priority(可选,默认是300)
Java版本切换
网上介绍的方法是使用update-alternatives --config
命令,对上边安装的java
,javac
…等进行一一配置,选取哪一个jdk为默认的。
其实我们可以借助于安装时的priority
来达到这个目的,这个值是越大越优先,所以我们在使用install_java.sh
时只需要将第二个参数指定为一个比较大的数字(大于目前所存在的jdk的priority)就可以将当前安装的jdk设置为默认选中的。
删除安装的Java
附上如何删除的脚本
remove_java.sh
#!/bin/bash
if [ $# -eq 0 ]
then
echo "Provide the jdk path to be removed!"
exit
fi
if [ ! -e "${1}" ]
then
echo "Provided jdk: ${1} does not exist!"
exit
fi
JDK_PATH=${1}
sudo update-alternatives --remove java ${JDK_PATH}/bin/java
sudo update-alternatives --remove javac ${JDK_PATH}/bin/javac
sudo update-alternatives --remove javah ${JDK_PATH}/bin/javah
sudo update-alternatives --remove javaws ${JDK_PATH}/bin/javaws
sudo update-alternatives --remove javap ${JDK_PATH}/bin/javap