Install4j安装Java Jar应用遇到ClassNotFoundException运行时错误

问题描述 投票:0回答:1

我正在使用最新的

Install4j (Multi-Platform Edition 10.0.7 - build 10124)
。 我利用项目中创建的 .jar 文件为 Java 应用程序创建了一个简单的安装。

所有必需的安装文件(包括 .jar 和资源文件)都位于单个应用程序目录中。 Install4j 被定向到应用程序的“文件”部分中的此目录。为控制台应用程序创建了启动器。在 Java 调用下:

  • 未使用任何虚拟机参数
  • 选择“类路径”选项,并将应用程序中的 .jar 文件添加为类路径条目 主类形式被选择为“类路径”...该字段填充了我的 Spring Boot 项目中定义的类路径。 (“选择主类”选项在 droop-doughnut 中显示带有 BOOT-INF.classes.{rest of class path} 的类路径版本。这似乎永远不起作用,因此删除了 BOOT-INF.classes。部分以保留传统的{类路径的其余部分})
  • 传递一个参数来指定活动配置文件
    (--spring.profiles.active=staging)

媒体类型为 Windows 64 位,JRE 为 Amazon Corretto - 17/17.0.7.7.1

构建已成功完成并创建一个工作安装程序应用程序。

安装成功完成,必要的文件已按预期添加。

当我们尝试运行 Install4j 为 Java Jar 文件应用程序创建的 EXE 文件时,就会出现问题。

应用程序返回以下错误消息:

java. lang.ClassNotFoundException: {entered class path in Install4j application}
    at java. base/jdk.internal.loader.BuiltinClassLoader.loadClass(BuiltinClassLoader.java:641)
    at java. base/jdk.internal.loader.ClassLoaders$AppClassLoader.loadClass(ClassLoaders.java:188)
    at java. base/java.lang.ClassLoader.loadClass(ClassLoader.java:520)
    at com.exe4j.runtime.LauncherEngine.launch(LauncherEngine.java:80)
    at com.exe4j.runtime.WinLauncher.main(WinLauncher.java:94)
    at com.install4j.runtime.launcher.WinLauncher.main(WinLauncher.java:25)

讽刺的是,应用程序使用

java -jar
命令行参数可以正确运行,但创建的 EXE 文件无法成功执行。

我已经重建了我的项目,确保在清单文件中定义了有问题的类路径,并利用了启动器设置屏幕的 Java 调用屏幕中的许多选项。

安装应用程序后,没有任何东西创建成功运行的 EXE。在所有示例中,应用程序都可以从命令行运行,但不能从 EXE 运行。

有人遇到过同样的问题吗?您找到解决方案或解决方法了吗?

java spring-boot install4j
1个回答
0
投票

您使用了错误的主类。你的实际主类不在类路径上,它是由 Spring Boot 使用自己的类加载器加载的。

查看META-INF/manifest.mf文件,里面有主类

org.springframework.boot.loader.JarLauncher

您必须在 install4j 启动器配置中选择它。

© www.soinside.com 2019 - 2024. All rights reserved.