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

如何解决"图形设备初始化失败: d3d, sw"当运行一个java Jar文件与JavaFx

程振濂
2023-03-14

大家下午好。

当我试图将Java代码作为可运行的Jar文件运行时,我遇到了一个问题。我正在使用Eclipse,我创建了一个普通的Java项目。我将javafxjars作为用户库包括在内。当我用IDE启动程序时,程序运行没有问题。为了创建Jar文件,我在可运行Jar文件中使用Java项目的内置导出。当我选中“将所需库提取到生成的JAR中”并运行它时,我得到以下错误消息:

Error: JavaFX runtime components are missing, and are required to run this application

当我选中“将所需库打包到生成的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 com.sun.javafx.tk.quantum.QuantumRenderer.getInstance(QuantumRenderer.java:280)
        at com.sun.javafx.tk.quantum.QuantumToolkit.init(QuantumToolkit.java:244)
        at com.sun.javafx.tk.Toolkit.getToolkit(Toolkit.java:260)
        at com.sun.javafx.application.PlatformImpl.startup(PlatformImpl.java:267)
        at com.sun.javafx.application.PlatformImpl.startup(PlatformImpl.java:158)
        at com.sun.javafx.application.LauncherImpl.startToolkit(LauncherImpl.java:658)
        at com.sun.javafx.application.LauncherImpl.launchApplication1(LauncherImpl.java:678)
        at com.sun.javafx.application.LauncherImpl.lambda$launchApplication$2(LauncherImpl.java:195)
        at java.base/java.lang.Thread.run(Thread.java:835)
Caused by: java.lang.RuntimeException: Error initializing QuantumRenderer: no suitable pipeline found
        at com.sun.javafx.tk.quantum.QuantumRenderer$PipelineRunnable.init(QuantumRenderer.java:94)
        at com.sun.javafx.tk.quantum.QuantumRenderer$PipelineRunnable.run(QuantumRenderer.java:124)
        ... 1 more
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:567)
        at org.eclipse.jdt.internal.jarinjarloader.JarRsrcLoader.main(JarRsrcLoader.java:61)
Caused by: java.lang.RuntimeException: No toolkit found
        at com.sun.javafx.tk.Toolkit.getToolkit(Toolkit.java:272)
        at com.sun.javafx.application.PlatformImpl.startup(PlatformImpl.java:267)
        at com.sun.javafx.application.PlatformImpl.startup(PlatformImpl.java:158)
        at com.sun.javafx.application.LauncherImpl.startToolkit(LauncherImpl.java:658)
        at com.sun.javafx.application.LauncherImpl.launchApplication1(LauncherImpl.java:678)
        at com.sun.javafx.application.LauncherImpl.lambda$launchApplication$2(LauncherImpl.java:195)
        at java.base/java.lang.Thread.run(Thread.java:835)

有人知道为什么我不能运行JAR,但在IDE中它运行正常吗?

我按照这里的文档https://openjfx.io/openjfx-docs/安装了JavaFX。

共有2个答案

夹谷信鸿
2023-03-14

检查构建的jar文件清单文件以查看其依赖项。将有一个名为Class path的变量:您可以通过右键单击jar文件并使用winrar或normal explorer META.INF打开(如果它们都以libs开头),然后在构建的jar文件所在的位置创建一个libs文件夹,并将所有javafx指定的jar文件复制到该文件夹中,然后执行

尹承泽
2023-03-14

我找到了解决问题的办法。当我将Libaries导出到生成的Jar时,我得到了JavaFX运行时组件丢失的错误。我现在想起来了,我以前在Eclipse中得到了同样的错误,尽管代码中没有错误,而且我使用了JavaFX元素。但要启动并运行它,我必须添加VM参数。所以当我想运行这个程序时,我只需要在命令宣传片中写这个。

假设您已经在构建Jar文件的目录中:

java --module-path "C:\Path\to\javafx-sdk-13.0.2\lib" --add-modules javafx.controls,javafx.fxml -jar YourJar.jar

它现在对我起作用了。希望它也能帮助别人。

最美好的祝福

 类似资料:
  • 所以我做了一个在IDE中运行良好的小JavaFX项目。但是当导出到可运行的jar中时,双击不运行。

  • 问题内容: 我试图在IntelliJ IDEA中创建JavaFX项目,但是每次都会出错。 完成教程https://openjfx.io/openjfx-docs/#IDE- Intellij之后 ,我得到了: 将-Dprism.verbose = true添加到IntelliJ IDEA中的VM选项之后(因此,我的VM选项如下所示: 然后我得到以下输出: 我应该怎么做才能使我的项目工作? 问题答案

  • 我刚刚开始在Linux上编写/测试JavaFX代码,在启动一个简单的应用程序时,我遇到了一个错误。以前我发现很多人对此感到担忧,但我可以找到一个关于它发生的原因的明确解释。我想了解我的场景中缺少什么以使其工作。

  • 我正在使用祖鲁openJdk 11作为Arm。我在IntelliJ和VsCode中都尝试过对接,得到了相同的错误。(我使用的是JavaFXSDK11.0.2)错误消息(来自VisualStudio代码的截图) 我真的非常感谢任何帮助,我已经尝试解决这个问题好几天了,但是找不到任何关于苹果硅的信息。 提前谢谢。 图形设备初始化失败:es2,初始化QuantumRenderer时的sw错误:找不到合适

  • 我正在尝试为我的代码做一个简单的csv读取,它一直工作到我今晚尝试Mac。目前是10点15分。3、卡塔琳娜。这是我的代码: 它给我的错误是:OSError:从文件初始化失败。 我尝试了多种不同的选项来读取这个csv,包括 但所有这些都给出了类似的错误。我确信有一个简单的答案,但是我还没有找到。我在终端上尝试了 sudo chown username: group filename 命令,并通过我的

  • 此外,我使用tomcat7-maven-plugin运行tomcat。 这是密码。 web.xml