我使用 maven 生成的 jar 通过 install4j 为我的应用程序创建了一个安装程序。为什么在执行.exe时找不到主类?



这是我如何使用maven创建jar文件的方法。

现在对于我的JavaFX应用程序,我使用的是加力FX框架。现在,我需要为此应用创建一个安装程序,以部署到其他设备。我正在使用 Install4j。我的步骤:

  1. mvn clean package
  2. 将生成的 JAR 文件复制并粘贴到其他目录中
  3. 将该目录添加到 install4j 文件
  4. 在启动器上的 Java 调用下,我选择 jar 文件,然后选择我的主类:"BOOT-INF.classes.inc.pabacus.TaskMetrics.TaskMetricsApplication">
  5. 我构建安装程序并运行它,安装到程序文件,然后打开 exe 文件

但随后出现一个错误对话框:

java.lang.NoClassDefFoundError: BOOT-INF/classes/inc/pabacus/TaskMetrics/TaskMetricsApplication (错误名称:inc/pabacus/TaskMetrics/TaskMetricsApplication(

所以我做错了两件事:

  1. 最初,就像很久以前一样,我尝试将JavaFX与Spring Framework一起使用 - 但没有成功。我不再使用 Spring,但我的 pom 文件中仍然有一些剩余的 Spring,这导致当我将其打包到 jar 时,它会将文件放在BOOT-INF目录中。我只需要删除春季剩余物,引导inf目录就消失了。

  2. 因此,在 install4j 中,您选择一个目录,其中包含要添加到安装程序的文件。在教程中,他们有一个单独的lib目录,其中包含外部库。所以我认为这就是我所需要的。我通过 maven 将我的依赖项复制到 lib 文件夹中,然后将它们与我的 jar 一起放入一个目录中。这就是我的目录的全部内容 - jar 文件和 lib 文件夹。那行不通。我不知道。显然,它需要 maven 生成的目标文件夹中的所有文件。我应该只使用目标文件夹本身。

所以你有它。我现在已经成功创建了一个安装程序。我确实希望没有人像我一样傻傻地走路,但如果你也遇到过同样的混乱,那么......来了吧。

您似乎已配置

BOOT-INF.classes.inc.pabacus.TaskMetrics

当正确的包名称为

inc.pabacus.TaskMetrics.TaskMetricsApplication

或者,启动器的 VM 参数配置不正确,并且包含可解释为主类的文本。

最新更新