【问题标题】:Install openJDK+openJFX 8 on Ubuntu 20在 Ubuntu 20 上安装 openJDK+openJFX 8
【发布时间】:2020-08-30 03:53:10
【问题描述】:

我正在尝试在 Ubuntu 20.10 上安装 OpenJDK 8 和 OpenJFX 8。

在 Ubuntu 上安装 openJFX 8 一直有点棘手,但我曾经能够使用这个 SO 答案中的提示来做到这一点:https://stackoverflow.com/a/56166582/2423283 过去工作正常(我想我使用的是 Ubuntu 19.something ),但最近 8u161-b12-1ubuntu2 似乎已被删除。

如需更多背景信息,我将通过自动化管道中的 docker 文件进行安装。以下是 Dockerfile 的相关部分:

FROM my.company.internal.registry:443/ubuntu:latest

RUN apt -y update && \
    apt -y install \
    openjdk-8-jdk \
    openjfx=8u161-b12-1ubuntu2 \
    libopenjfx-java=8u161-b12-1ubuntu2 \
    libopenjfx-jni=8u161-b12-1ubuntu2

这曾经运行得很好,但现在我明白了:

E: Version '8u161-b12-1ubuntu2' for 'openjfx' was not found
E: Version '8u161-b12-1ubuntu2' for 'libopenjfx-java' was not found
E: Version '8u161-b12-1ubuntu2' for 'libopenjfx-jni' was not found

到目前为止我已经尝试过什么

我已尝试将 Dockerfile 中 FROM 行中的 ubuntu:latest 更改为 ubuntu:19:10,但仍然出现缺少包的错误。

我尝试删除那些版本限制(=8u161-b12-1ubuntu2),在安装过程中我没有看到任何错误,但是当我编译我的代码时,找不到任何 JavaFX 类。

【问题讨论】:

标签: java ubuntu javafx-8 openjfx


【解决方案1】:

我偶然发现了同样的问题,发现最简单的解决方法是使用sdkman:https://sdkman.io/install

通过这三个命令,我能够在 Ubuntu 20.04 上安装带有 JavaFX 的 openjdk 8:

curl -s "https://get.sdkman.io" | bash

source "$HOME/.sdkman/bin/sdkman-init.sh"

sdk install java 8.0.252.fx-zulu

【讨论】:

  • 看起来安装了 OpenJDK 8 的 Azul zulu 版本,我认为应该没问题(需要检查是否添加了任何类型的法律/许可更改)。听起来 sdkman 是个不错的选择,而且可能是最方便的安装方式,但真正解决问题的方法是使用 zulu 或其他一些 OpenJDK 社区构建。
【解决方案2】:

如果您打算使用 JDK 8 和 JavaFX,我发现最好安装包含 JavaFX 的 OpenJDK。

对于版本 8,并非所有 OpenJDK 都包含 JavaFX(例如 AdoptOpenJDK)。我发现的最好的是

  • Zulu :必须在Java Package下拉菜单中选择“JDK FX”
  • Liberica:必须选择“Full JDK”

Liberica 为 raspberry pi 和各种其他架构提供构建。如果您需要,利比里卡是您的最佳选择。

【讨论】:

  • 谢谢,这看起来很棒。一旦我有机会尝试(可能需要一段时间),我会接受这个作为答案。
【解决方案3】:

使用 Oracle JDK(即使只是作为临时解决方法)

我刚才在回复this question for 18.04时已经说过了

对于任何想要使用 javafx 进行一些基本练习的学习者,安装 Oracle 的 Java 8(内置 javafx)可能是一个更好的解决方案,而不是使用开放包。有很棒的instructions here

您可以继续努力安装 openjfx,但这将继续您的学习。

我对 docker 文件和自动化管道一无所知,但我怀疑很多来这个问题的人只是手动安装的早期学习者。

注意,aran 已在对 OP 的评论中建议了此解决方法,请考虑支持该评论。

【讨论】:

  • 我同意仅仅使用 Oracle JDK 是人们想要学习的好方法。就我而言,这不是一个选项,因为这是用于生产用途,而且我的公司在 Oracle 的许可方面存在一些问题。
【解决方案4】:

通过 Aptitude 安装 Liberica JDK / JRE

Liberica JDK 很容易安装在支持 aptitude 包管理器的基于 Ubuntu / Debian 的操作系统上。

您所要做的就是添加官方的 BellSoft 存储库:

wget -q -O - "https://download.bell-sw.com/pki/GPG-KEY-bellsoft" | sudo apt-key add -
echo "deb [arch=amd64] https://apt.bell-sw.com/ stable main" | sudo tee /etc/apt/sources.list.d/bellsoft.list

然后更新您的软件包并安装完整的 bellsoft java 版本。使用完整版很重要,因为它是 JFX 中唯一的一个。另外请记住,在安装此 java 版本之前,您应该通过apt purge 卸载所有以前安装的 java 版本。

sudo apt-get update
sudo apt-get install bellsoft-java8-full

如果您只需要 JRE,您可以使用bellsoft-java8-runtime-full 来保护一些空间。安装完成后,使用 JavaFX 的应用程序就可以正常工作了。

如果您因为使用 Debian 而没有使用 Ubuntu 存储库,则需要输入以下命令以确保在 Bellsoft 存储库的 apt update 上没有验证错误。

#Use this only in case there is a verification error on update
apt-key adv --keyserver hkp://keyserver.ubuntu.com --recv-keys 32E9750179FCEA62

如果您没有使用带有 aptitude 包管理器的操作系统,那么还支持其他一些包管理器,例如 yum 和 yast。 Click here

【讨论】:

  • 您能否澄清(在编辑或评论中)为什么需要在安装此 java 版本之前通过 apt purge 卸载所有以前安装的 java 版本?我不愿意这样做,因为设置起来需要一些努力,如果 Liberica 不成功,我不想重做。
  • 只是我推荐的。如果您需要安装多个 java 版本,那么当然不要这样做。只安装一个 java 版本让运行应用程序更容易,因为您可以确定操作系统中的 java 命令确实指向 liberica java 版本,因此使用正确的版本来执行。
猜你喜欢
  • 2015-01-20
  • 2019-10-07
  • 1970-01-01
  • 2021-02-27
  • 1970-01-01
  • 2020-08-26
  • 1970-01-01
  • 1970-01-01
  • 2019-09-21
相关资源
最近更新 更多