【问题标题】:Error initializing QuantumRenderer: no suitable pipeline found in Eclipse JavaFX初始化 QuantumRenderer 时出错:在 Eclipse JavaFX 中找不到合适的管道
【发布时间】:2022-05-04 01:42:01
【问题描述】:

运行 JavaFX 应用程序后显示“初始化 QuantumRenderer 时出错:找不到合适的管道”。我在项目中添加了所需的 JavaFX jar 文件,但不知道为什么会出现此错误。

Graphics Device initialization failed for :  d3d, 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:283)
        at javafx.graphics/com.sun.javafx.tk.quantum.QuantumToolkit.init(QuantumToolkit.java:254)
        at javafx.graphics/com.sun.javafx.tk.Toolkit.getToolkit(Toolkit.java:264)
        at javafx.graphics/com.sun.javafx.application.PlatformImpl.startup(PlatformImpl.java:291)
        at javafx.graphics/com.sun.javafx.application.PlatformImpl.startup(PlatformImpl.java:163)
        at javafx.graphics/com.sun.javafx.application.LauncherImpl.startToolkit(LauncherImpl.java:659)
        at javafx.graphics/com.sun.javafx.application.LauncherImpl.launchApplicationWithArgs(LauncherImpl.java:410)
        at javafx.graphics/com.sun.javafx.application.LauncherImpl.launchApplication(LauncherImpl.java:364)
        at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
        at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
        at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
        at java.base/java.lang.reflect.Method.invoke(Method.java:566)
        at java.base/sun.launcher.LauncherHelper$FXHelper.main(LauncherHelper.java:1051)
    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:95)
        at javafx.graphics/com.sun.javafx.tk.quantum.QuantumRenderer$PipelineRunnable.run(QuantumRenderer.java:125)
        at java.base/java.lang.Thread.run(Thread.java:829)
    Exception in thread "main" java.lang.reflect.InvocationTargetException
        at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
        at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
        at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
        at java.base/java.lang.reflect.Method.invoke(Method.java:566)
        at java.base/sun.launcher.LauncherHelper$FXHelper.main(LauncherHelper.java:1051)
    Caused by: java.lang.RuntimeException: No toolkit found
        at javafx.graphics/com.sun.javafx.tk.Toolkit.getToolkit(Toolkit.java:276)
        at javafx.graphics/com.sun.javafx.application.PlatformImpl.startup(PlatformImpl.java:291)
        at javafx.graphics/com.sun.javafx.application.PlatformImpl.startup(PlatformImpl.java:163)
        at javafx.graphics/com.sun.javafx.application.LauncherImpl.startToolkit(LauncherImpl.java:659)
        at javafx.graphics/com.sun.javafx.application.LauncherImpl.launchApplicationWithArgs(LauncherImpl.java:410)
        at javafx.graphics/com.sun.javafx.application.LauncherImpl.launchApplication(LauncherImpl.java:364)
        ... 5 more

【问题讨论】:

  • 遵循 openjfx.io 上的入门文档。

标签: java eclipse javafx javafx-11


【解决方案1】:

在 Eclipse IDE 中像往常一样创建一个 java 项目并在 Windows > Preferences 和 Java > Build Path > User Libraries 下创建一个新库,单击 New... 为库命名并添加 .jar,单击 Add External JARs ... 转到解压缩 javafx 包的路径,然后在 lib 下选择所有 .jar。单击打开并应用和关闭。 您可以开始导入 javafx 代码。 如果运行应用程序会报错 “错误:缺少 JavaFX 运行时组件,需要运行此应用程序” 要解决此问题,请转到运行 > 运行配置。 在 Java Application 下新建配置 在 Arguments 选项卡的右侧,查找 VM Arguments 并添加

--module-path "PATH_TO_YOUR_JAVAFX_LIB_FOLDER" --add-modules javafx.controls,javafx.fxml

在我的例子中,PATH_TO_YOUR_JAVAFX_LIB_FOLDER 是“C:\Program Files\Java\jdk-11.0.14\openjfx-18.0.1_windows-x64_bin-sdk\javafx-sdk-18.0.1\lib”。 应用更改并运行 第一个问题修复

现在,如果您尝试导出项目,IDE 将向您显示一条警告,指出 VM 参数不会成为可运行 JAR 的一部分,如果您执行 jar,您将面临同样的错误:“错误:JavaFX 运行时缺少组件,需要运行此应用程序” 我总是在导出向导中选中“将所需的库复制到 jar 旁边的子文件夹中”。 要修复错误,请在导出的 .jar 旁边创建一个新文本文件,并使用 .bat 扩展名(在 Windows 中)对其进行命名 编辑 .bat 文件并添加:

java --module-path "PATH_TO_YOUR_JAVAFX_LIB_FOLDER" --add-modules javafx.controls,javafx.fxml -jar YOUR_PROJECT_NAME.jar

一切都完成了,但是PATH_TO_YOUR_JAVAFX_LIB_FOLDER 在你的机器上,那么如果你在另一台机器上运行.jar 呢?

java --module-path "YOUR_PROJECT_NAME_lib/" --add-modules javafx.controls,javafx.fxml -jar YOUR_PROJECT_NAME.jar

YOUR_PROJECT_NAME_lib 与导出的 .jar 位于同一目录中

如果现在运行你会得到错误

"图形设备初始化失败: d3d, sw 初始化 QuantumRenderer 时出错:找不到合适的管道 ... "

发生此错误是因为它没有找到 natives(.dll),所以, 复制 PATH_TO_YOUR_JAVAFX 下的文件夹 bin 将其粘贴到导出的 .jar 文件的同一文件夹中

这应该可以解决问题。希望对您有所帮助。

【讨论】:

    猜你喜欢
    • 2021-04-20
    • 1970-01-01
    • 1970-01-01
    • 2021-09-13
    • 2021-12-04
    • 2019-12-09
    • 1970-01-01
    • 2022-01-14
    • 2019-02-23
    相关资源
    最近更新 更多