当前位置: 首页 > 知识库问答 >
问题:

我如何让Java FX在Ubuntu 18.04.2 LTS上运行OpenJDK8?

吴均
2023-03-14

在环境中尝试编译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

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

  • 如何使用Java 10
  • 在maven中添加javafx依赖项
  • https://mvnrepository.com/artifact/org.openjfx/javafx/11
  • 带有JavaFX的Maven项目(在`lib`中带有jar文件
  • 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
  • 为什么Ubuntu Wily(15.10)上的OpenJDK 8中没有包含JavaFX?
  • http://can4eve.bitplan.com/index.php/javafx

最有希望的行动

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

但错误仍然存在。

要让OpenJDK8和JavaFX在Ubuntu18.04.2 LTS上工作需要做些什么?

共有2个答案

上官扬
2023-03-14

我所做的是从源头上建立它。这里关于OpenJDK wiki的说明对我有用。一旦我构建了它,我就必须把罐子放在正确的地方,就像其他stackoverflow帖子所说的那样。

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/

在那之后,我能够编译我的项目!

龙飞文
2023-03-14

来自的暗示

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。(如果你愿意自己回答这个问题,我很乐意删除我自己的答案...)

 类似资料:
  • 我有一个通过5000端口运行的烧瓶服务器,它很好。我可以访问http://example.com:5000 但是是否可以简单地在http://example.com上访问它呢?我想这意味着我必须把端口从5000改为80。但当我在Flask上尝试时,我运行它时会得到这个错误消息。 运行返回 我需要先干掉这些进程吗?安全吗?或者有没有另一种方法可以使Flask在端口5000上运行,但可以用某种方式重定

  • 我一直在我的电脑上用Tensorflow写程序,它使用Linux薄荷。无论出于什么原因,我都无法让Tensorflow在我的图形处理器上运行。 2021-04-26 15:46:11.462612: W tenstorflow/stream_executor/平台/默认/dso_loader.cc:60]无法加载动态库'libcudart.so.11.0';libcudart.so.11.0:无法

  • 有可能在iOS上运行Java程序吗?如果是,我应该使用什么技术?用JavaFX开发一个应用程序是可能的,我想在iOS上运行它,可能吗?相反,在Android上,我必须做任何特定的改变吗?

  • 我正在使用IntelliJ,我想运行一个以前在Linux中运行的JavaFX项目,我导入了库,并使用了vm参数 <代码>--模块路径/用户/frenk/桌面/javafx-sdk-17/lib--添加模块javafx。控件,javafx。fxml 但我一直收到同样的错误 我看到的所有答案都与vm params有关,所以我无法弄清楚可能是什么问题,我使用java 16作为运行时和macOS bigs

  • 我已经成功地在Linux Ubuntu 16.04上安装了tensorflow(GPU),并做了一些小的修改,以便使它与新的Ubuntu LTS版本一起工作。

  • 我对OSGi不是完全的新手,但显然已经够新手了。 我想做的是编写一个OSGi(ApacheFelix)包,并将Java脚本API(JSR-223)与Groovy结合使用。为此,我安装了groovy 2.4.12,它已经是一个OSGi捆绑包,我将groovy运行时(2.4.12)视为Felix远程Shell控制台中的一个活动服务。 我也理解Java的ServiceLoader API和OSGi的捆绑