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

Rig*_*nto 5 java installation javafx maven install4j

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

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

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

但是随后出现错误对话框:

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

Rig*_*nto 2

所以我做错了两件事:

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

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

所以你有它。我现在已经成功创建了一个安装程序。我确实希望没有人像我一样愚蠢,但如果你也遇到了同样的混乱,那么......就在这里。

  • 这是我第一次开始赏金,所以我只是评论一下以防万一。在我自己找到答案之前我就开始了赏金。 (2认同)