如何在 Ubuntu 18.04 上安装最新的 openjdk 12

Posted

技术标签:

【中文标题】如何在 Ubuntu 18.04 上安装最新的 openjdk 12【英文标题】:How to install the latest openjdk 12 on Ubuntu 18.04 【发布时间】:2019-09-21 02:10:43 【问题描述】:

我已经通过发出命令安装了默认 jdk:

apt-get install default-jdk

这将安装 openjdk 11 并且 apt-get 似乎将文件安装到所有地方。例子:

/etc/java-11-openjdk/management
/usr/lib/jvm/java-11-openjdk-amd64/lib
/usr/share/doc/openjdk-11-jre-headless/JAVA_HOME
/var/lib/dpkg/info/openjdk-11-jre:amd64.postinst

从上面的示例位置可以看出,文件散落在各处。

我刚刚安装了一个网络应用程序,它发出警告说它只支持 jdk 12(我认为它是最新的 openjdk 版本)。如何安装版本 12 以替换版本 11?在 Ubuntu 18.04 上升级 openjdk 版本以使其不与以前的版本混合的最佳方法是什么?

【问题讨论】:

也许 docker 可以帮助你。试试ubuntu:19.04 图像。 【参考方案1】:

这对我有用:

    使用 wget 下载存档或访问 JDK 12 GA Release 站点并手动下载存档:
wget https://download.java.net/java/GA/jdk12.0.2/e482c34c86bd4bf8b56c0b35558996b9/10/GPL/openjdk-12.0.2_linux-x64_bin.tar.gz
    创建 /usr/java 目录:
sudo mkdir /usr/java
    将存档移至新目录:
mv openjdk-12.0.2_linux-x64_bin.tar.gz /usr/java
    转到此目录:
cd /usr/java
    解压存档:
sudo tar -xzvf openjdk-12.0.2_linux-x64_bin.tar.gz
    设置环境变量,为此打开 /etc/profile 文件:
sudo nano /etc/profile
    并将以下代码添加到该文件的末尾:
JAVA_HOME=/usr/java/jdk-12.0.2
PATH=$PATH:$HOME/bin:$JAVA_HOME/bin
export JAVA_HOME
export JRE_HOME
export PATH
    配置Java命令默认使用新的JDK:
sudo update-alternatives --install "/usr/bin/java" "java" "/usr/java/jdk-12.0.2/bin/java" 1
sudo update-alternatives --install "/usr/bin/javac" "javac" "/usr/java/jdk-12.0.2/bin/javac" 1
    检查 Java 版本:
java -version

如果您之前安装了另一个 Java 版本并且版本没有更改,请尝试运行以下命令并选择所需的版本:

sudo update-alternatives --config java

【讨论】:

将 JAVA_HOME 添加到 /etc/profile 会束缚我使用 jdk12 吗?如果我想要多个 java 版本并且在我执行 update-alternatives --config java 时会自动设置 java_home 怎么办? 不要导出不切实际的路径,一直使用update-alternatives来切换java,如果你在真正不完美的软件开发世界中,你会很遗憾有不同版本的项目。在这种特殊情况下,12 甚至不是 LTS,因此至少将路径设置为 LTS。 这对我来说破坏了 sdkmanager。 java -version 是 openjdk version "12.0.2" 2019-07-16,但 sdkmanager 抛出 Exception in thread "main" java.lang.NoClassDefFoundError: javax/xml/bind/annotation/XmlSchema。对此有什么简单的解决方案吗? @MattLarson 我通过用命令行工具替换我的 sdkmanager 安装解决了这个问题:developer.android.com/studio#command-tools 有关如何安装和使用它的示例,请参阅此 dockerfile:github.com/bitrise-io/android/blob/master/Dockerfile【参考方案2】:

来自 Ubuntu 的官方软件包存储库不提供 Openjdk12 软件包,因为 openjdk11 是您的版本的最后一个 openjdk 软件包版本。

【讨论】:

是的,我已经尝试过了。我正在尝试找到安装 openjdk 12 的最佳方法,而不会破坏已经存在的 jdk 11 文件。而且我怀疑我也需要切换到替代方案。 @u84six 你可以将你的 LTS 版本升级到最新的非 lts 版本 19.04 我使用的是 aws EC2,它们不支持 18.04 之后的任何内容。 我认为不幸的是,我必须卸载默认 jdk,然后手动安装 oracle jdk 12。呃。不错的 Linux。 @u84six 你也可以手动安装openjdk openjdk.java.net/install

以上是关于如何在 Ubuntu 18.04 上安装最新的 openjdk 12的主要内容,如果未能解决你的问题,请参考以下文章

Ubuntu18.04上安装Docker-Compose

如何在Ubuntu 18.04上安装Docker

如何在Ubuntu 18.04上安装Python 3.8

在 ubuntu 18.04 上安装 opencv 2.4.9

在 Ubuntu 18.04 上使用静态可执行文件安装 Docker CE 及后续设置

在 Ubuntu 18.04 上使用静态可执行文件安装 Docker CE 及后续设置