首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何解决用JavaFx运行java Jar文件时图形设备初始化失败: d3d,sw

如何解决用JavaFx运行java Jar文件时图形设备初始化失败: d3d,sw
EN

Stack Overflow用户
提问于 2020-03-12 23:06:54
回答 2查看 4.1K关注 0票数 0

大家下午好。

当我尝试将Java代码作为一个可运行的Jar文件运行时,我遇到了一个问题。我使用的是Eclipse,我创建了一个普通的Java项目。我将Libary jars包含在用户JavaFX中。当我使用IDE启动该程序时,它可以正常运行。为了创建Jar文件,我在Runnable Jar文件中使用了build in Export of a Java Project。当我选中"Extract required libaries into generated JAR“并运行它时,我得到这个错误消息:

代码语言:javascript
运行
复制
Error: JavaFX runtime components are missing, and are required to run this application

当我选中“将所需的库打包到生成的JAR中”并运行它时,我得到这个错误消息:

代码语言:javascript
运行
复制
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。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2020-03-16 19:03:38

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

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

代码语言:javascript
运行
复制
java --module-path "C:\Path\to\javafx-sdk-13.0.2\lib" --add-modules javafx.controls,javafx.fxml -jar YourJar.jar

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

谨致问候

票数 2
EN

Stack Overflow用户

发布于 2020-03-13 03:23:35

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

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/60656844

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档