在Windows上运行JavaFX应用程序时出错
我正在尝试使用OpenJDK/OpenJFX运行JavaFX应用程序, 这是一个基于OracleJDK/JavaFX的现有工作应用程序,我们希望将其迁移到OpenJFX 我按照OpenJFX文档中关于如何构建胖jar的说明进行操作,并使用以下版本:在Windows上运行JavaFX应用程序时出错,java,windows,javafx,openjfx,Java,Windows,Javafx,Openjfx,我正在尝试使用OpenJDK/OpenJFX运行JavaFX应用程序, 这是一个基于OracleJDK/JavaFX的现有工作应用程序,我们希望将其迁移到OpenJFX 我按照OpenJFX文档中关于如何构建胖jar的说明进行操作,并使用以下版本: OpenJDK10 OpenJFX11 我成功地构建了一个包含所有.class文件和库的胖jar 在Windows 10上,我能够构建并运行OpenJFX HelloWorld应用程序。但是,当运行我自己的应用程序时,我会收到关于无法加载的各种股
- OpenJDK10
- OpenJFX11
java.lang.InternalError: Error loading stock shader Solid_Color
at com.sun.prism.d3d.D3DResourceFactory.createStockShader(D3DResourceFactory.java:411)
at com.sun.prism.impl.ps.BaseShaderContext.getPaintShader(BaseShaderContext.java:263)
at com.sun.prism.impl.ps.BaseShaderContext.validatePaintOp(BaseShaderContext.java:484)
at com.sun.prism.impl.ps.BaseShaderContext.validatePaintOp(BaseShaderContext.java:355)
at com.sun.prism.impl.ps.BaseShaderGraphics.fillQuad(BaseShaderGraphics.java:1613)
at com.sun.javafx.tk.quantum.ViewPainter.doPaint(ViewPainter.java:475)
at com.sun.javafx.tk.quantum.ViewPainter.paintImpl(ViewPainter.java:328)
at com.sun.javafx.tk.quantum.UploadingPainter.run(UploadingPainter.java:142)
at java.base/java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:514)
at java.base/java.util.concurrent.FutureTask.runAndReset(FutureTask.java:305)
at com.sun.javafx.tk.RenderJob.run(RenderJob.java:58)
at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1135)
at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:635)
at com.sun.javafx.tk.quantum.QuantumRenderer$PipelineRunnable.run(QuantumRenderer.java:125)
at java.base/java.lang.Thread.run(Thread.java:844)
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:564)
at com.sun.prism.d3d.D3DResourceFactory.createStockShader(D3DResourceFactory.java:408)
at com.sun.prism.impl.ps.BaseShaderContext.getPaintShader(BaseShaderContext.java:263)
at com.sun.prism.impl.ps.BaseShaderContext.validatePaintOp(BaseShaderContext.java:484)
at com.sun.prism.impl.ps.BaseShaderContext.validatePaintOp(BaseShaderContext.java:355)
at com.sun.prism.impl.ps.BaseShaderGraphics.fillQuad(BaseShaderGraphics.java:1613)
at com.sun.javafx.tk.quantum.ViewPainter.doPaint(ViewPainter.java:475)
at com.sun.javafx.tk.quantum.ViewPainter.paintImpl(ViewPainter.java:328)
at com.sun.javafx.tk.quantum.UploadingPainter.run(UploadingPainter.java:142)
at java.base/java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:514)
at java.base/java.util.concurrent.FutureTask.runAndReset(FutureTask.java:305)
at com.sun.javafx.tk.RenderJob.run(RenderJob.java:58)
at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1135)
at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:635)
at com.sun.javafx.tk.quantum.QuantumRenderer$PipelineRunnable.run(QuantumRenderer.java:125)
at java.base/java.lang.Thread.run(Thread.java:844)
Caused by: java.lang.RuntimeException: InputStream must be non-null
at com.sun.prism.d3d.D3DResourceFactory.getBuffer(D3DResourceFactory.java:349)
at com.sun.prism.d3d.D3DResourceFactory.createShader(D3DResourceFactory.java:390)
at com.sun.prism.shader.Solid_Color_Loader.loadShader(Solid_Color_Loader.java:47)
... 19 more
我从一个类似的问题中采纳了增加VRAM的建议:
这没有帮助
另请阅读另一个类似问题:
尝试在各种Windows安装上运行该应用程序,但出现了相同的问题
它们似乎是由以下代码引起的:
Pane root = new Pane();
root.setStyle("-fx-background-color: #676767;-fx-base: #676767; -fx-background: #676767;");
那总是很好
我遗漏了什么?在javafx css文档参考中,我没有看到任何-fx base或-fx背景。你说它总是很好用,在什么情况下?您是否只尝试使用-fx背景色?现在就测试它:在没有启用任何样式代码或样式表的情况下,我甚至会遇到相同的错误…为什么要混合使用JDK版本和JavaFX版本?你能试试OpenJDK 11吗?已经试过了,同样的结果。那个部分有很多警告,敦促人们不要这样做。我猜有些重要的东西没有包含在你的.jar的正确位置,或者根本没有包含在内。您是否考虑过将应用程序模块化,并使用
jlink
创建可运行的映像?