Eclipse Eclispe:导出JavaFX14

Eclipse Eclispe:导出JavaFX14,eclipse,javafx,jar,export,Eclipse,Javafx,Jar,Export,我使用java14、javaFX14、FXML、XML和一些音频文件在Eclipse中构建了一个应用程序。 当我在Eclipse中启动该应用程序时,它工作得很好,但当我将其导出为jar文件时,它就不工作了 资料来源: 首先,我使用了简单的导出JAR,如这里的链接所示: 我得到的错误是: JavaFX runtime components are missing, and are required to run this application 然后我尝试将所需的库打包到生成的JAR

我使用java14、javaFX14、FXML、XML和一些音频文件在Eclipse中构建了一个应用程序。 当我在Eclipse中启动该应用程序时,它工作得很好,但当我将其导出为jar文件时,它就不工作了

资料来源:

首先,我使用了简单的导出JAR,如这里的链接所示:

我得到的错误是:

    JavaFX runtime components are missing, and are required to run this application
然后我尝试将所需的库打包到生成的JAR中,该JAR将javafxjar文件输出到JAR中

我得到的错误是:

va.lang.ClassNotFoundException: com.sun.glass.ui.win.WinPlatformFactory
        at java.base/java.net.URLClassLoader.findClass(URLClassLoader.java:435)
        at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:589)
        at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:522)
        at java.base/java.lang.Class.forName0(Native Method)
        at java.base/java.lang.Class.forName(Class.java:340)
        at com.sun.glass.ui.PlatformFactory.getPlatformFactory(PlatformFactory.java:42)
        at com.sun.glass.ui.Application.run(Application.java:144)
        at com.sun.javafx.tk.quantum.QuantumToolkit.startup(QuantumToolkit.java:280)
        at com.sun.javafx.application.PlatformImpl.startup(PlatformImpl.java:269)
        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:832)
    Failed to load Glass factory class
    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:564)
        at org.eclipse.jdt.internal.jarinjarloader.JarRsrcLoader.main(JarRsrcLoader.java:61)
    Caused by: java.lang.NullPointerException
        at com.sun.glass.ui.Application.run(Application.java:144)
        at com.sun.javafx.tk.quantum.QuantumToolkit.startup(QuantumToolkit.java:280)
        at com.sun.javafx.application.PlatformImpl.startup(PlatformImpl.java:269)
        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:832)
最后,我尝试使用javaFX和Maven来设置一个测试,但是为了完成这个任务,我需要处理一组全新的问题,我甚至不确定Maven是否能帮助我解决这个问题

这是我作为程序员的第一个应用程序。尝试导出它让我进入了应用程序开发的全新领域。我花了一周的时间试图解决这个问题,但我甚至不知道该找什么


提前感谢

最简单的方法是在
cmd
中提供JavaFX位置及其依赖项,如下所示:

java——模块路径%path\u到\u FX%——添加模块javafx.controls、javafx.fxml、javafx.swing-jar

  • 对于Java>=11的JavaFX,创建可运行jar的经典方法实际上不再有效
  • 方法是通过jpackage和其他一些工具创建一个自包含的应用程序包。您可以在此处找到非模块化项目的教程:

  • 我已经这样设置了javaFX库的路径:将Path_设置为\u FX=“C:\Program Files\Java\javaFX-sdk-14.0.2.1\lib”,当我运行jar文件时:Java-p“%Path_to_FX%“--添加模块javafx.controls-jar C:\Users\12213119\Desktop\GameOfLife.jar我得到错误:错误:找不到或加载主类文件\Java\javafx-sdk-14.0.2.1\lib,原因是:Java.lang.ClassNotFoundException:Files\Java\javafx-sdk-14.0.2.1\libThx@smithblack,我是如何使它工作的。不确定为什么%PATH\u TO\u FX%不适合我。我使用--module path$'/home/Documents/lib/javafx-sdk-14.0.1/lib来代替。我还删除了Eclipse中VM参数的所有行。这样就不会干扰命令行中添加的模块。对,您就是mipa。我会调查的!