Deepin v15 系统默认的 JDK 是 OpenJDK10,由于 Oracle JDK 比开源的 OpenJDK 更稳定,且现在最常用的版本是 JDK8,所以考虑自行安装 Oracle JDK8,并用 Debian 系列系统自带的 update-alternatives 命令管理多个 JDK。

具体步骤

  1. Oracle 官网下载 jdk8,解压后放在 /usr/local/ 目录下。

  2. /etc/profile 文件中设置环境变量:

    1
    2
    3
    4
    5
    # set for java
    unset _JAVA_OPTIONS
    export JAVA_HOME=/usr/local/jdk1.8.0_211
    export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
    export PATH=$PATH:$JAVA_HOME/bin
  3. 使用 update-alternatives 命令将 jdk8 配置为默认 jdk

    update-alternatives 是 Debian 系列系统中专门用于维护系统命令链接符的工具。

    update-alternatives 命令创建新的系统命令链接并设置优先级:

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    $ sudo update-alternatives --install /usr/bin/javac javac /usr/local/jdk1.8.0_211/bin/javac 1102
    $ sudo update-alternatives --install /usr/bin/java java /usr/local/jdk1.8.0_211/bin/java 1102
    $ sudo update-alternatives --install /usr/bin/jar jar /usr/local/jdk1.8.0_211/bin/jar 1102
    $ sudo update-alternatives --install /usr/bin/javadoc javadoc /usr/local/jdk1.8.0_211/bin/jar 1102
    $ sudo update-alternatives --install /usr/bin/javah javah /usr/local/jdk1.8.0_211/bin/javah 1102
    $ sudo update-alternatives --install /usr/bin/javap javap /usr/local/jdk1.8.0_211/bin/javap 1102

    # 参数说明:
    # sudo update-alternatives --install <link> <name> <path> <priority>
    # 1. link: 要将链接创建到哪儿(绝对地址)
    # 2. name: 命令链接符名称
    # 3. path: 要使用的新命令的路径(绝对地址)
    # 4. priority: 命令的优先级,当 alternative 为自动模式时,系统默认启用优先级最高的链接

    由于 alternative 默认是自动模式,且 jdk8 的优先级 1102 大于 OpenJDK10 的优先级 1101,所以这样就已经算是设置好了,以后使用 javajavac 等命令时都会默认调用 jdk8。

  4. 验证默认 jdk 版本:

    1
    2
    $ javac -version
    javac 1.8.0_211

update-alternatives 命令的其他常用参数

  1. 查看某个命令的链接组信息:

    1
    $ sudo update-alternatives --display java	# <name>
  2. 手动设置命令的 alternative:

    1
    $ sudo update-alternatives --config java	# <name>
  3. 移除某个 alternative:

    1
    $ sudo update-alternatives --remove java /usr/local/jdk1.8.0_211/bin/java	# <name> <path>