不要在服务名称中使用任何空格!
经过许多小时的测试和分解Tomcat并复制它的引导过程,我的问题的修复最终是当Windows服务的名称中有空格时,Apache Commons Daemon(Procrun)无法正常工作.
当服务名称中有空格时,它似乎正确地安装并注册了Windows服务. Windows注册表项甚至看起来正确.该服务甚至在调试(也称为TS或控制台)模式下运行正常.然而,当运行时,作为Windows启动的实际服务,如果服务在服务名称中安装了空格,则会失败.
我肯定希望Procrun失败时有某种类型的日志输出!良好的日志记录可以使调试问题像这样.
我确实需要在我的服务名称中有多个单词,所以我用一个字命名我的服务,并使用“DisplayName”参数更改名称:
> prunsrv.exe //IS//MyService --Install="C:\path-to-prunsrv.exe" --Jvm=auto \
--Startup=auto --StartMode=jvm --Classpath="C:\path-to-MyService.jar" \
--StartClass=com.mydomain.MyService --DisplayName="My Service"