2

我创建了一个runnable jar使用spring-boot-maven-plugin. jar 可以使用jar -jar %FILENAME%.

但我想windows使用procrun.

问题:当我启动应用程序时,我得到以下输出:

[2016-12-05 12:33:22] [info]  [ 7788] Starting service...
[2016-12-05 12:33:23] [error] [ 4856] FindClass de/app/MyApplication failed
[2016-12-05 12:33:23] [error] [ 7788] Failed to start Java
[2016-12-05 12:33:23] [error] [ 7788] ServiceStart returned 4
[2016-12-05 12:33:23] [info]  [ 7916] Run service finished.
[2016-12-05 12:33:23] [info]  [ 7916] Commons Daemon procrun finished

如果我将文件重命名为 *tar.gz,我可以看到没有目录“de/app/”。而是一个BOOT-INF/classes/de/app目录。

问题是:为什么应用程序可以通过 using 启动java -jar,而不是作为 procrun 服务(基本上应该这样做)?

4

2 回答 2

1

节目有点晚了,但万一有人偶然发现这个问题:

spring 生成的 fat jar 文件包含封装的依赖项。如果你想通过 procrun 运行它们,你可以通过调用org.springframework.boot.loader.JarLauncher

因此,在创建服务时,请尝试以下操作:

prunsrv //IS/Myservice --Classpath="C:\my-fat.jar" --StartClass="org.springframework.boot.loader.JarLauncher"

这相当于运行java -jar my-fat.jar

于 2021-07-28T14:08:28.953 回答
0

显然,从 1.4.0.RELEASE 开始的 Spring Boot 有一个更接近于 WAR 封装的胖 jar 封装。

此处描述的问题。

作为一种解决方案,您可以尝试将分类器添加到此处描述的 maven 执行中,或者只是更改为旧版本的 Spring Boot。

希望这可以帮助!

于 2016-12-05T11:53:42.143 回答