java - 初始化 QuantumRenderer : no suitable pipeline found in Eclipse JavaFX 时出错

标签 java eclipse javafx javafx-11

运行 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

最佳答案

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

--模块路径 "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 文件的同一文件夹中

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

关于java - 初始化 QuantumRenderer : no suitable pipeline found in Eclipse JavaFX 时出错,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/70374601/

相关文章:

java - 带有事件的警报对话框错误

java - 在 eclipse 上为 jPanel 设置标题

eclipse 中的 C++ 编码...帮助代码辅助

excel - 将 JavaFX TableView 数据导出到 Excel (XLS)

Javafx - StackPane 中的图像可以偏移吗?如果可以,我做错了什么?

java - 在 Play Framework 上生成管理区域(CRUD)

java - 我需要在同一个 "equation"中声明一个变量两次

Win RT 上的 Java 支持

java - 图像是如何渲染到屏幕上的?

php - 有没有办法在 Eclipse 中搜索 PHP 项目中的所有文件名?