如何在 Ubuntu 18.04.2 LTS 上使用 OpenJDK 8 运行 Java FX?

Posted

技术标签:

【中文标题】如何在 Ubuntu 18.04.2 LTS 上使用 OpenJDK 8 运行 Java FX?【英文标题】:How do I get Java FX running with OpenJDK 8 on Ubuntu 18.04.2 LTS? 【发布时间】:2019-10-03 14:19:30 【问题描述】:

尝试在环境中编译 JavaFX 应用程序时:

java -version
openjdk version "1.8.0_212"
OpenJDK Runtime Environment (build 1.8.0_212-8u212-b03-0ubuntu1.18.04.1-b03)
OpenJDK 64-Bit Server VM (build 25.212-b03, mixed mode)

cat /etc/lsb-release 
DISTRIB_ID=Ubuntu
DISTRIB_RELEASE=18.04
DISTRIB_CODENAME=bionic
DISTRIB_DESCRIPTION="Ubuntu 18.04.2 LTS"

我收到错误消息:

cannot access javafx.event.EventHandler
[ERROR]   class file for javafx.event.EventHandler not found

我试图通过以下链接找到解决方案:

how to add javafx dependencies in maven with java 10 https://mvnrepository.com/artifact/org.openjfx/javafx/11 Maven project with JavaFX (with jar file in `lib`) https://github.com/javafx-maven-plugin/javafx-maven-plugin https://askubuntu.com/questions/1091157/javafx-missing-ubuntu-18-04 https://unix.stackexchange.com/questions/505628/add-openjfx-class-path-in-debian-for-java11 https://askubuntu.com/questions/609951/javafx-is-not-on-the-default-classpath-even-with-oracle-jdk-1-8 Why is JavaFX is not included in OpenJDK 8 on Ubuntu Wily (15.10)? http://can4eve.bitplan.com/index.php/JavaFX

最有希望的行动在哪里

    使用 apt install openjfx 安装 openjfx 将 JAVA_HOME 环境变量设置为 /usr/lib/jvm/java-8-openjdk-amd64

但错误仍然存​​在。

需要做什么才能让 OpenJDK 8 和 JavaFX 在 Ubuntu 18.04.2 LTS 上运行?

【问题讨论】:

是否有机会尝试使用 Oracle 的 Java 8?它确实包含 JavaFX,而且 Mark Hurd 看起来是个好人 没有。新的许可政策正在阻碍。 见bugs.launchpad.net/ubuntu/+source/openjfx/+bug/1799946 【参考方案1】:

来自

的提示

https://github.com/JabRef/help.jabref.org/issues/204

帮助。命令:

apt purge openjfx
apt install openjfx=8u161-b12-1ubuntu2 libopenjfx-jni=8u161-b12-1ubuntu2 libopenjfx-java=8u161-b12-1ubuntu2
apt-mark hold openjfx libopenjfx-jni libopenjfx-java

解决了这个问题。非常感谢https://github.com/Druidefix。 (如果你想自己回答这个问题,我会很乐意删除我自己的答案......)

【讨论】:

这就是你所要做的吗?你必须通过this 或类似的吗?您是否能够在不使用 gradle、maven、e(fx)clipse 的情况下实现它?那里似乎有很多指导,似乎有很多方法可以让 openjfx 运行,文章和论坛谈论构建、模块等。似乎没有什么对我有用,我有点绝望。我在 xubuntu 19.10 上,但也安装了 18.04,希望你的步骤会有所帮助 - 不走运。 我在一个干净的虚拟机上试过这个,它工作。可能与 docker / travis 一起尝试会给你一些关于缺少什么的提示 在当前的 ubuntu 版本 (20.04) 中,这些包不再可用。现在 openjfx 默认为 v11。 见wiki.bitplan.com/index.php/Java8 - 由于大量不兼容,较新的java默认设置在相当多的环境中留下了很大的混乱 我创建了新问题***.com/questions/61783369/…,希望找到更新的修复,因为此答案中的修复最近停止工作。【参考方案2】:

我所做的是从源代码构建它。指令here on the OpenJDK wiki 对我有用。构建完成后,我必须将罐子放在正确的位置,就像 this other *** post 谈到的那样。

cd build/sdk/
sudo cp -R rt/lib /usr/lib/jvm/java-8-openjdk-amd64/jre/lib/
sudo cp ./lib/ant-javafx.jar /usr/lib/jvm/java-8-openjdk-amd64/lib/
sudo cp ./lib/javafx-mx.jar /usr/lib/jvm/java-8-openjdk-amd64/lib/

之后我就可以编译我的项目了!

【讨论】:

【参考方案3】:

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

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

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

这已由 aran 在对 OP 的评论中提出,请考虑支持该评论。

【讨论】:

这个问题专门针对 OpenJDK 以及根据 Oracle 的新许可政策对它的需求。在这种情况下,指向有许可证问题的 Oracle JDK 没有帮助,因为它是问题而不是解决方案。 @WolfgangFahl 我明白你在说什么,但我很确定这个问题得到了很多人的访问,他们无法让 javafx 运行并且对政治不太关心(在至少在短期内)。随意投反对票,但我个人很遗憾没有早点安装 Oracle JDK。我拒绝这样做是因为它不是“硬核开源/免费”,而且我认为如此执着于原则是错误的。事后看来,Oracle JDK 对于 javafx 的第一步来说是非常好的,我可以尝试在学习 javafx 本身的同时运行 openjfx。 - 我可以确认带有 OracleJDK 的 JavaFX 大部分都是开箱即用的。一个值得注意的例外是 Raspberry PI,请参阅 can4eve.bitplan.com/index.php/JavaFX

以上是关于如何在 Ubuntu 18.04.2 LTS 上使用 OpenJDK 8 运行 Java FX?的主要内容,如果未能解决你的问题,请参考以下文章

ubuntu18.04.2LTS下安装和配置MySql数据库 --Linux

ubuntu 18.04-apt-sources

markdown lubuntu LTS 18.04.2Sインストール手顺

Ubuntu上使firefox识别Applet

如何从Ubuntu14.04LTS更新到Ubuntu16.04LTS

我应该如何在 Ubuntu 20.04 LTS 上安装 Django