Java jar 作为Windows service运行大坑与解决方式
最近在做的一个java项目需要作为windows的service在windows上运行。最初的解决方案就是利用windows自带的sc命令来创建windows service,也确实注册成功了。
具体的命令是sc create ... (最后service执行的命令就类似...java.exe -jar a.jar)
但是发现无法启动,会报error 1053 the service did not respond to the start or control request in a timely fashion。
后来查了半天问题,终于在Stack Overflow上看见有一个post里有个回答提到java.exe不可以直接做成service!
解决方案基本都是利用第三方的工具,类似nssm,java service wrapper等。因为我这边的需求是用户下载安装包要尽量小,所以我直接采用了把nssm打到安装包里,然后用nssm去注册。
nssm流程:
nssm install...
nssm start…(具体的语法可以google~远远不止这两个命令,可以设置很多参数)
可参考
https://stackoverflow.com/questions/37003271/inno-setup-and-nssm-service-working-integration