这是我如何使用maven创建jar文件的方法。
现在对于我的JavaFX应用程序,我使用的是加力FX框架。现在,我需要为此应用创建一个安装程序,以部署到其他设备。我正在使用 Install4j。我的步骤:
mvn clean package
- 将生成的 JAR 文件复制并粘贴到其他目录中
- 将该目录添加到 install4j 文件
- 在启动器上的 Java 调用下,我选择 jar 文件,然后选择我的主类:"BOOT-INF.classes.inc.pabacus.TaskMetrics.TaskMetricsApplication">
- 我构建安装程序并运行它,安装到程序文件,然后打开 exe 文件
但随后出现一个错误对话框:
java.lang.NoClassDefFoundError: BOOT-INF/classes/inc/pabacus/TaskMetrics/TaskMetricsApplication (错误名称:inc/pabacus/TaskMetrics/TaskMetricsApplication(
所以我做错了两件事:
-
最初,就像很久以前一样,我尝试将JavaFX与Spring Framework一起使用 - 但没有成功。我不再使用 Spring,但我的 pom 文件中仍然有一些剩余的 Spring,这导致当我将其打包到 jar 时,它会将文件放在
BOOT-INF
目录中。我只需要删除春季剩余物,引导inf目录就消失了。 -
因此,在 install4j 中,您选择一个目录,其中包含要添加到安装程序的文件。在教程中,他们有一个单独的
lib
目录,其中包含外部库。所以我认为这就是我所需要的。我通过 maven 将我的依赖项复制到 lib 文件夹中,然后将它们与我的 jar 一起放入一个目录中。这就是我的目录的全部内容 - jar 文件和 lib 文件夹。那行不通。我不知道。显然,它需要 maven 生成的目标文件夹中的所有文件。我应该只使用目标文件夹本身。
所以你有它。我现在已经成功创建了一个安装程序。我确实希望没有人像我一样傻傻地走路,但如果你也遇到过同样的混乱,那么......来了吧。
您似乎已配置
BOOT-INF.classes.inc.pabacus.TaskMetrics
当正确的包名称为
inc.pabacus.TaskMetrics.TaskMetricsApplication
或者,启动器的 VM 参数配置不正确,并且包含可解释为主类的文本。