Eclipse上的JavaFX 11和Oracle JDK 11-执行JAR文件时出错

时间:2019-08-20 16:59:55

标签: java eclipse javafx jar

我正在尝试使用Eclipse 4.9和Oracle JDK 11从JavaFX 11项目构建中运行JAR文件。视图是使用FXML(完整项目源代码here)构建的。

注意:我可以从其他非JavaFX项目构建和运行JAR,而不会出现任何问题。

构建JAR文件的过程:

1)右键单击项目名称->导出-> Java / Runnable JAR文件->下一步

2)选择“主类”,选择目标文件夹,选择第三个选项进行库处理

结果是一个带有lib子文件夹的JAR文件(我已经手动添加了数据库属性文件):

enter image description here

子文件夹包含JavaFX 11(和MySQL)的lib文件:

enter image description here

我正在尝试运行该应用的过程:

如果我尝试使用以下命令运行它:

java -cp myapp.jar application.Main --module-path C:\appfolder\myapp_lib --add-modules=javafx.fxml,javafx.controls

我收到以下错误:

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

但是,我听说必须先出现模块路径,然后才能尝试使用以下命令运行

java --module-path C:\appfolder\myapp_lib --add-modules=javafx.fxml,javafx.controls -cp myapp.jar application.Main 

我收到此错误:

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:280)
        at javafx.graphics/com.sun.javafx.tk.quantum.QuantumToolkit.init(QuantumToolkit.java:222)
        at javafx.graphics/com.sun.javafx.tk.Toolkit.getToolkit(Toolkit.java:260)
        at javafx.graphics/com.sun.javafx.application.PlatformImpl.startup(PlatformImpl.java:267)
        at javafx.graphics/com.sun.javafx.application.PlatformImpl.startup(PlatformImpl.java:158)
        at javafx.graphics/com.sun.javafx.application.LauncherImpl.startToolkit(LauncherImpl.java:658)
        at javafx.graphics/com.sun.javafx.application.LauncherImpl.launchApplicationWithArgs(LauncherImpl.java:409)
        at javafx.graphics/com.sun.javafx.application.LauncherImpl.launchApplication(LauncherImpl.java:363)
        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:94)
        at javafx.graphics/com.sun.javafx.tk.quantum.QuantumRenderer$PipelineRunnable.run(QuantumRenderer.java:124)
        at java.base/java.lang.Thread.run(Thread.java:834)
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:272)
        at javafx.graphics/com.sun.javafx.application.PlatformImpl.startup(PlatformImpl.java:267)
        at javafx.graphics/com.sun.javafx.application.PlatformImpl.startup(PlatformImpl.java:158)
        at javafx.graphics/com.sun.javafx.application.LauncherImpl.startToolkit(LauncherImpl.java:658)
        at javafx.graphics/com.sun.javafx.application.LauncherImpl.launchApplicationWithArgs(LauncherImpl.java:409)
        at javafx.graphics/com.sun.javafx.application.LauncherImpl.launchApplication(LauncherImpl.java:363)
        ... 5 more

作为最后的尝试,我尝试了一些详细的选项来获取更多信息:

java -Djavafx.verbose=true -Dprism.verbose=true --module-path C:\appfolder\myapp_lib --add-modules=javafx.fxml,javafx.controls -cp myapp.jar application.Main 

然后得到一个huge error log (shared on Github)

如何使我的应用程序运行?谢谢。

0 个答案:

没有答案