JavaFX:Jar 无法找到或加载主 class main.Launcher

JavaFX : Jar Could not find or load main class main.Launcher

我用 JavaFX 版本 15.0.1.

编写了一个 JavaFX 应用程序

我正在使用 IntelliJ IDEA,一切正常,因为我从 IntelliJ 执行我的代码。

现在我想部署构建 Jar 并创建可执行文件的应用程序。

我已经知道 Java 8 之后的版本存在一些问题,因为不再包含包装。

我在 Whosebug 和 YouTube 上进行了大量搜索,并按照所有指南一步一步地找到了一些有用的东西。

我还发现了一个人使用我相同的 JavaFX 版本和 IntelliJ 构建 Jar 的视频,最后,他只需双击创建的 Jar 和应用程序 运行顺利,没有错误。

这是我的实际设置:

我设置了 Launcher.java class 以绕过指南中的 Main.java 问题。

package main;

import main.Main;

public class Launcher
{ 
    public static void main(String[] args){Main.main(args);}
}

构建了项目然后在工件中我创建了一个新的基于模块 并从我的 JavaFX SDK 添加 .dll 文件。

之后,我再次构建项目,然后我转到:构建 -> 构建工件并构建。

在这个过程之后,我的 out 目录看起来像这样:

在工件 -> MenuManager_jar 中有我的 MenuManager.jar 文件。

在那之后,正如我在指南中看到的那样,我可以简单地双击它,或者 运行 使用:java -jar MenuManager.jar,它应该 运行 我的申请。

但是在我双击之后,没有任何反应,即使我从控制台运行使用这个命令:

java -jar MenuManager.jar

甚至

java --module-path "C:\Program Files\Java\javafx-sdk-15.0.1\lib" --add-modules javafx.controls,javafx.fxml -jar MenuManager.jar

显示此错误

Error: Could not find or load main class main.Launcher
Caused by: java.lang.ClassNotFoundException: main.Launcher

所以在那之后,我决定自己寻找Launcher.class文件。

它存在于我以 zip 打开的 Jar 中:

显然在 jar 的“主”目录之外有所有 dependencies/libraries :

我寻找 posts/videos/guides/packaging 工具,但找不到为我的项目创建此 Jar 或可执行文件的方法。这个过程以正确的方式创建了 Jar,但由于某种原因我似乎无法 运行 它。

最后一步我需要帮助。

自己找到了解决方法!

我通过标准 JavaFX jar.

在我的项目中导入了一些其他 外部库

它是作为 Jar 导入的特定 mysql 库版本。

应该是在 artifact 中构建出了一些问题,我现在还不知道是什么原因,可能是版本问题或者不兼容。

用另一个库替换它或删除它之后,jar构建良好并且我什至可以 运行 我的应用程序甚至双击。

建议

我对有相同问题或想要启动 JavaFX 应用程序并且知道他们将要创建 jar 的人的建议是:

  • 导入新库后尝试构建工件,这样您在使用和构建后就不会感到意外。
  • 如果库使最终的 jar 无法工作,请尝试用类似的替换它,或者尝试找出是否有不同版本的库。
  • 自项目开始以来,每次进行一些大的更改时都尝试构建构建工件,以便能够跟踪问题更快。