安装JDK后无法运行.jar文件,报QuantumRenderer初始化错误
解决「Error initializing QuantumRenderer: no suitable pipeline found」问题
问题背景
你在Windows 10系统上使用AdoptOpenJDK 12.0.2运行eXist数据库的jar包时,执行java -jar fileName.jar命令出现了JavaFX渲染初始化失败的错误,完整错误信息如下:
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:222) 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.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)
你的Java版本信息:
openjdk version "12.0.2" 2019-07-16 OpenJDK Runtime Environment Adopt OpenJDK (build 12.0.2+10) OpenJDK 64-Bit Server VM Adopt OpenJDK (build 12.0.2+10, mixed mode, sharing)
解决方案
这个错误本质是JavaFX无法找到合适的图形渲染管道,结合你的环境,推荐按以下顺序尝试:
1. 强制使用软件渲染模式
这是最快的临时解决方法,绕过硬件加速的问题。在运行jar包时添加-Dprism.order=sw参数:
java -Dprism.order=sw -jar fileName.jar
如果经常需要运行,可以设置系统环境变量_JAVA_OPTIONS为-Dprism.order=sw,这样所有Java程序都会默认使用软件渲染。
2. 确保JavaFX组件完整
AdoptOpenJDK 12及以上版本默认不包含JavaFX(JavaFX从JDK 11开始成为独立模块),而eXist的jar包可能依赖JavaFX。你需要:
- 下载对应版本的JavaFX SDK(和你的JDK版本匹配,比如12.0.2)
- 运行jar包时指定JavaFX的模块路径和需要的模块:
java --module-path "path/to/javafx-sdk-12.0.2/lib" --add-modules javafx.controls,javafx.graphics -jar fileName.jar
替换path/to/javafx-sdk-12.0.2/lib为你实际的JavaFX lib目录路径。
3. 更新显卡驱动
错误中提到d3d(Direct3D)初始化失败,可能是显卡驱动过时导致的。打开Windows设备管理器,找到显示适配器,右键更新驱动程序,选择自动搜索更新的驱动软件,完成更新后重启电脑再尝试运行。
4. 切换到JDK 8
很多旧版本的Java应用(比如eXist的早期版本)对JDK 11+的兼容性不佳,而JDK 8默认包含JavaFX,且图形渲染管道更稳定。你可以:
- 下载AdoptOpenJDK 8版本
- 切换系统的JAVA_HOME环境变量指向JDK 8的安装目录
- 重新执行
java -jar fileName.jar命令
内容的提问来源于stack exchange,提问作者oleksii.sapov-erlinger
相关产品推荐
相关产品推荐

