gpt4 book ai didi

java - 使用 Visual Studio Code 远程扩展运行 JavaFX

转载 作者:行者123 更新时间:2023-12-01 18:14:46 25 4
gpt4 key购买 nike

我已经尝试了几个小时,在 Docker 容器内的 Visual Studio 远程开发扩展的帮助下运行 JavaFX 应用程序。我想借助X11转发应用程序的图形。我已经在容器中集成了 X11 所需的包,设置了 DISPLAY 环境变量并将 X11 套接字安装在容器中(/tmp/.X11-unix/)。不幸的是,它不会那样工作...每当我尝试运行该应用程序时,我都会收到以下错误消息:

root@c0699153fc1c:/workspaces/JavaFX/src# java --module-path /usr/share/openjfx/lib/ --add-modules javafx.controls,javafx.fxml HelloWorldApplication.java 
Graphics Device initialization failed for : es2, sw
Error initializing QuantumRenderer: no suitable pipeline found
java.lang.RuntimeException: java.lang.RuntimeException: Error initializing QuantumRenderer: no suitable pipeline found
at javafx.graphics/com.sun.javafx.tk.quantum.QuantumRenderer.getInstance(QuantumRenderer.java:280)
at javafx.graphics/com.sun.javafx.tk.quantum.QuantumToolkit.init(QuantumToolkit.java:222)
at javafx.graphics/com.sun.javafx.tk.Toolkit.getToolkit(Toolkit.java:260)
at javafx.graphics/com.sun.javafx.application.PlatformImpl.startup(PlatformImpl.java:267)
at javafx.graphics/com.sun.javafx.application.PlatformImpl.startup(PlatformImpl.java:158)
at javafx.graphics/com.sun.javafx.application.LauncherImpl.startToolkit(LauncherImpl.java:658)
at javafx.graphics/com.sun.javafx.application.LauncherImpl.launchApplication1(LauncherImpl.java:678)
at javafx.graphics/com.sun.javafx.application.LauncherImpl.lambda$launchApplication$2(LauncherImpl.java:195)
at java.base/java.lang.Thread.run(Thread.java:834)
Caused by: java.lang.RuntimeException: Error initializing QuantumRenderer: no suitable pipeline found
at javafx.graphics/com.sun.javafx.tk.quantum.QuantumRenderer$PipelineRunnable.init(QuantumRenderer.java:94)
at javafx.graphics/com.sun.javafx.tk.quantum.QuantumRenderer$PipelineRunnable.run(QuantumRenderer.java:124)
... 1 more
Exception in thread "main" java.lang.RuntimeException: No toolkit found

我使用 openjdk:11 作为 docker 容器的基础镜像,并在其中安装了以下软件包:

  • openjfx
  • libx11-dev
  • libxext-dev
  • libxrender-dev
  • libxtst-dev

我之前已经尝试在 Docker 容器中运行 IntelliJ,效果很好。 GUI 被转发到我的显示器,并且 JavaFX 应用程序在那里工作正常。

如果对此事有任何帮助,我将不胜感激。也许我监督了一些事情。

<小时/>

编辑:我想我发现了问题。尽管我遵循了大量教程,但 OpenJDK:11 和 OpenJFX 似乎无法正常工作...所以我现在所做的就是导出 IntelliJ IDEA 附带的 JDK 并将其安装到由 VS Code 创建的容器中。使用安装的编译器编译 .java 文件并执行后,它完美运行。

所以现在我唯一的问题是,我需要在 VS Code 中进行工作设置才能使 JavaFX 应用程序正常工作 -> 因此需要正确的 OpenJDK 和 OpenJFX 配置。

最佳答案

终于,我解决了这个问题。所以解决方案是:

我创建了一个自己的 Dockerfile,其中包含 openjdk:12图像作为基础并将 JavaFX 库(我从这里获得: https://gluonhq.com/products/javafx/ )复制到容器中。此外,我添加了 X11 所需的所有软件包(如上所述)。在 VS Code 中,启动容器后,我只需将库添加到“引用库”中即可。之后,我必须调整 launch.json 并添加以下 vmArgs: "vmArgs": "--module-path <Path-to-FX-Folder> --add-modules javafx.controls"

现在,当我运行应用程序时,将创建窗口并显示在我的显示器上。

关于java - 使用 Visual Studio Code 远程扩展运行 JavaFX,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60397091/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com