我正在使用最新的
Install4j (Multi-Platform Edition 10.0.7 - build 10124)
。
我利用项目中创建的 .jar 文件为 Java 应用程序创建了一个简单的安装。
所有必需的安装文件(包括 .jar 和资源文件)都位于单个应用程序目录中。 Install4j 被定向到应用程序的“文件”部分中的此目录。为控制台应用程序创建了启动器。在 Java 调用下:
(--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 运行。
有人遇到过同样的问题吗?您找到解决方案或解决方法了吗?
您使用了错误的主类。你的实际主类不在类路径上,它是由 Spring Boot 使用自己的类加载器加载的。
查看META-INF/manifest.mf文件,里面有主类
org.springframework.boot.loader.JarLauncher
您必须在 install4j 启动器配置中选择它。