我想使用WinRun4J将 Spring Boot 应用程序作为 Windows 服务运行。它不起作用,因为 WinRun4J 无法找到主类。我注意到这是因为 spring-boot-maven-plugin 在 BOOT-INF 文件夹中收集了源代码,它无法访问那里的类。这是错误跟踪:
[info] Registering natives for Native class
[info] Registering natives for FFI class
[err] Could not find service class
[err] Failed to initialise service: 1
java.lang.NoClassDefFoundError: SpringBootLauncherService
Caused by: java.lang.ClassNotFoundException: SpringBootLauncherService
at java.net.URLClassLoader.findClass(Unknown Source)
at java.lang.ClassLoader.loadClass(Unknown Source)
at sun.misc.Launcher$AppClassLoader.loadClass(Unknown Source)
at java.lang.ClassLoader.loadClass(Unknown Source)
有没有办法在 BOOT-INF 文件夹之外生成带有所需类的 Spring Boot 可执行 jar?或者您是否知道使用 Spring Boot 和 WinRun4J 的完整示例?
spring-boot-maven-plugin生成的jar结构如下:
myapp-0.0.1-SNAPSHOT.jar
|--- org: Spring Boot Loader classes
|--- META-INF: maven/ & MANIFEST-MF
|--- BOOT-INF: lib/ & classes/
我相信我需要这样的东西:
myapp-0.0.1-SNAPSHOT.jar
|--- org: Spring Boot Loader classes
|--- META-INF: maven/ & MANIFEST-MF
|--- BOOT-INF: lib/ & classes/
|--- SpringBootLauncherService.class
我将不胜感激任何帮助。