我使用从 maven 生成的 jar 通过 install4j 为我的应用程序创建了一个安装程序。为什么执行.exe 找不到main class?
I created an installer via install4j for my app using a jar generated from maven. Why can't it find the main class when executing the .exe?
Here's how I created a jar file using maven.
现在,对于我的 JavaFX 应用程序,我正在使用 afterburner FX 框架。现在我需要为这个应用程序创建一个安装程序以部署到其他设备。我正在使用 Install4j。我的步骤:
mvn clean package
- 将生成的 jar 文件复制并粘贴到不同的目录中
- 将该目录添加到 install4j 文件
- 在 Java 调用下的启动器上,我 select jar 文件,然后我 select 我的主要 class: `BOOT-INF.classes.inc.pabacus.TaskMetrics.TaskMetricsApplication`
- 我构建安装程序并 运行 它,安装到程序文件,然后打开 exe 文件
但是随后出现一个错误对话框:
java.lang.NoClassDefFoundError: BOOT-INF/classes/inc/pabacus/TaskMetrics/TaskMetricsApplication (wrong name: inc/pabacus/TaskMetrics/TaskMetricsApplication)
您似乎已经配置
BOOT-INF.classes.inc.pabacus.TaskMetrics
作为主要 class 当正确的包名称是
inc.pabacus.TaskMetrics.TaskMetricsApplication
或者,您的启动器 VM 参数配置不正确,并且包含可以解释的文本 main class。
所以我做错了两件事:
最初,就像过去一样,我尝试将 JavaFX 与 Spring 框架一起使用 - 但未成功。我不再使用 Spring,但我的 pom 文件中仍然有一些剩余的 Spring,这导致它在我将文件打包到 jar 时将文件放在 BOOT-INF
目录中。我只需要简单地删除 Spring 剩菜,boot-inf 目录就不见了。
因此,在 install4j 中,您 select 一个目录,其中包含要添加到安装程序中的文件。在教程中,他们有一个单独的 lib
目录,其中包含外部库。所以我认为这就是我所需要的。我通过 Maven 将我的依赖项复制到一个 lib 文件夹中,然后将它们与我的 jar 一起放入一个目录中。这就是我的所有目录 - jar 文件和 lib 文件夹。那是行不通的。我不知道。显然,它需要 all maven 生成的目标文件夹中的文件。我应该只使用目标文件夹本身。
好了。我现在已经成功创建了一个安装程序。我真的希望没有人像我一样傻,但是如果你也遇到了同样的烂摊子,好吧......在这里。
Here's how I created a jar file using maven.
现在,对于我的 JavaFX 应用程序,我正在使用 afterburner FX 框架。现在我需要为这个应用程序创建一个安装程序以部署到其他设备。我正在使用 Install4j。我的步骤:
mvn clean package
- 将生成的 jar 文件复制并粘贴到不同的目录中
- 将该目录添加到 install4j 文件
- 在 Java 调用下的启动器上,我 select jar 文件,然后我 select 我的主要 class: `BOOT-INF.classes.inc.pabacus.TaskMetrics.TaskMetricsApplication`
- 我构建安装程序并 运行 它,安装到程序文件,然后打开 exe 文件
但是随后出现一个错误对话框:
java.lang.NoClassDefFoundError: BOOT-INF/classes/inc/pabacus/TaskMetrics/TaskMetricsApplication (wrong name: inc/pabacus/TaskMetrics/TaskMetricsApplication)
您似乎已经配置
BOOT-INF.classes.inc.pabacus.TaskMetrics
作为主要 class 当正确的包名称是
inc.pabacus.TaskMetrics.TaskMetricsApplication
或者,您的启动器 VM 参数配置不正确,并且包含可以解释的文本 main class。
所以我做错了两件事:
最初,就像过去一样,我尝试将 JavaFX 与 Spring 框架一起使用 - 但未成功。我不再使用 Spring,但我的 pom 文件中仍然有一些剩余的 Spring,这导致它在我将文件打包到 jar 时将文件放在
BOOT-INF
目录中。我只需要简单地删除 Spring 剩菜,boot-inf 目录就不见了。因此,在 install4j 中,您 select 一个目录,其中包含要添加到安装程序中的文件。在教程中,他们有一个单独的
lib
目录,其中包含外部库。所以我认为这就是我所需要的。我通过 Maven 将我的依赖项复制到一个 lib 文件夹中,然后将它们与我的 jar 一起放入一个目录中。这就是我的所有目录 - jar 文件和 lib 文件夹。那是行不通的。我不知道。显然,它需要 all maven 生成的目标文件夹中的文件。我应该只使用目标文件夹本身。
好了。我现在已经成功创建了一个安装程序。我真的希望没有人像我一样傻,但是如果你也遇到了同样的烂摊子,好吧......在这里。