在 Windows 上运行但不在 Linux 上运行的 JavaFX 应用程序

JavaFX app running on windows but not in linux

提问人:mumbert4 提问时间:11/9/2023 更新时间:11/9/2023 访问量:49

问:

我使用 jaxafx 和 intellij 创建了一个应用程序,在 Windows 中工作正常,但是当我在 linux 中使用以下命令执行 jar 时:

java --module-path javafx-sdk-21.0.1/lib --add-modules javafx.controls,javafx.fxml -jar  ./i-ViSta4bike2.jar

我收到此错误:

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 [email protected]/com.sun.javafx.tk.quantum.QuantumRenderer.getInstance(QuantumRenderer.java:283)
    at [email protected]/com.sun.javafx.tk.quantum.QuantumToolkit.init(QuantumToolkit.java:253)
    at [email protected]/com.sun.javafx.tk.Toolkit.getToolkit(Toolkit.java:263)
    at [email protected]/com.sun.javafx.application.PlatformImpl.startup(PlatformImpl.java:290)
    at [email protected]/com.sun.javafx.application.PlatformImpl.startup(PlatformImpl.java:162)
    at [email protected]/com.sun.javafx.application.LauncherImpl.startToolkit(LauncherImpl.java:651)
    at [email protected]/com.sun.javafx.application.LauncherImpl.launchApplicationWithArgs(LauncherImpl.java:409)
    at [email protected]/com.sun.javafx.application.LauncherImpl.launchApplication(LauncherImpl.java:364)
    at java.base/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:103)
    at java.base/java.lang.reflect.Method.invoke(Method.java:580)
    at java.base/sun.launcher.LauncherHelper$FXHelper.main(LauncherHelper.java:1135)
Caused by: java.lang.RuntimeException: Error initializing QuantumRenderer: no suitable pipeline found
    at [email protected]/com.sun.javafx.tk.quantum.QuantumRenderer$PipelineRunnable.init(QuantumRenderer.java:95)
    at [email protected]/com.sun.javafx.tk.quantum.QuantumRenderer$PipelineRunnable.run(QuantumRenderer.java:125)
    at java.base/java.lang.Thread.run(Thread.java:1583)
Exception in thread "main" java.lang.reflect.InvocationTargetException
    at java.base/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:118)
    at java.base/java.lang.reflect.Method.invoke(Method.java:580)
    at java.base/sun.launcher.LauncherHelper$FXHelper.main(LauncherHelper.java:1135)
Caused by: java.lang.RuntimeException: No toolkit found
    at [email protected]/com.sun.javafx.tk.Toolkit.getToolkit(Toolkit.java:275)
    at [email protected]/com.sun.javafx.application.PlatformImpl.startup(PlatformImpl.java:290)
    at [email protected]/com.sun.javafx.application.PlatformImpl.startup(PlatformImpl.java:162)
    at [email protected]/com.sun.javafx.application.LauncherImpl.startToolkit(LauncherImpl.java:651)
    at [email protected]/com.sun.javafx.application.LauncherImpl.launchApplicationWithArgs(LauncherImpl.java:409)
    at [email protected]/com.sun.javafx.application.LauncherImpl.launchApplication(LauncherImpl.java:364)
    at java.base/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:103)
    ... 2 more

我尝试了在互联网上能找到的一切,我只想在两个操作系统中运行我的应用程序。

Java Linux 的 Windows 智能的 JavaFX

评论

0赞 Slimu 11/9/2023
我有一个类似的项目,我必须在不同的操作系统上运行 IDEA。我有以下适用于 MacOS 的模块路径(javafx 是项目依赖项),但它在 Linux 上类似,只是相对于主文件夹:--module-path /Users/my_user/.m2/repository/org/openjfx/javafx-base/17.0.2/javafx-base-17.0.2-mac-aarch64.jar:/Users/my_user/.m2/repository/org/openjfx/javafx-media/17.0.2/javafx-media-17.0.2-mac-aarch64.jar:/Users/my_user/.m2/repository/org/openjfx/javafx-graphics/17.0.2/javafx-graphics-17.0.2-mac-aarch64.jar
3赞 trashgod 11/9/2023
验证您的平台和体系结构的版本是否正确;另请参阅此处的评论。
0赞 jewelsea 11/10/2023
您可以在目标 Linux 系统上运行或 jpackage,以创建可在该目标 Linux 系统上使用的运行时映像或安装程序。有关使用 jlink 的信息,请参阅 JavaFX 入门文档的“运行时映像”部分。Oracle 有一个 jpackage 指南。或者,您可以从 Gluon 下载相关的 jmod,并将它们包含在模块路径上的应用程序分发中。jlink
1赞 jewelsea 11/10/2023
并非所有 Linux 版本都能够开箱即用地运行 JavaFX 应用程序。例如,我认为 archlinux 不会,因为它使用 musl 而不是 glibc。同样,不包含 xWindows 客户端窗口系统的精简服务器版本的 Linux 不会运行 JavaFX 应用程序。系统的图形和 CPU 硬件也需要与您的 JavaFX 版本兼容。主要供应商(例如 Ubuntu 或 Fedora)的标准完整客户端发行版应运行 JavaFX 应用程序(具有相同的 CPU 架构),而无需安装额外的软件。
1赞 David Weber 11/10/2023
请添加您的 Linux 发行版、已安装的 JDK 和 Java 编译版本。

答: 暂无答案