在Ubuntu 20上安装openJDK + openJFX 8

时间:2020-05-13 19:34:01

标签: java ubuntu javafx-8 openjfx

我正在尝试在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的ubuntu:latest行中将ubuntu:19:10更改为FROM,但仍然遇到缺少软件包的错误。

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

4 个答案:

答案 0 :(得分:9)

如果您准备使用JDK 8和JavaFX,我发现最好安装一个包含JavaFX的OpenJDK。

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

  • Zulu :您必须在Java软件包下拉列表中选择“ JDK FX”
  • Liberica:您必须选择“完整JDK”

Liberica为树莓派和许多其他体系结构提供构建。如果需要,Liberica是您的理想之选。

答案 1 :(得分:4)

我偶然发现了同一问题,发现最简单的解决方案是使用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

答案 2 :(得分: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

答案 3 :(得分:0)

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

我刚才在回答this question for 18.04

时已经说过

对于所有希望使用javafx进行一些基础练习的学习者,安装Oracle的Java 8(内置Javafx)可能是一个更好的解决方案,而不是将其与开放包打乱。有很棒的instructions here

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

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

注意,这种解决方法已经由aran在对OP的评论中提出,请考虑对该评论进行投票。