我正在尝试使用procrun将我的应用程序(在一个胖jar中)作为一个服务运行在windows上。具体来说,我的开发系统是Server 2012。我创建了一个批处理文件,就像我看到的所有示例一样,但是当我尝试运行它时(甚至只是单独运行prunsrv.exe ),我会得到以下错误
c:\Users\kmilner\Desktop>c:\seven10\procrun\amd64\prunsrv
[2015-12-22 14:42:47] [warn] [ 3132] The system cannot find the Registry key for service 'prunsrv'
[2015-12-22 14:42:47] [error] [ 3132] Load configuration failed
[2015-12-22 14:42:47] [error] [ 3132] The system cannot find the file specified.
[2015-12-22 14:42:47] [error] [ 3132] Commons Daemon procrun failed with exit value: 2 (Failed to load configuration)
[2015-12-22 14:42:47] [error] [ 3132] The system cannot find the file specified.我不明白它为什么要将服务名称分配给可执行文件的名称。下面是我编写的批处理文件,但是,当我只运行没有任何参数的prunsrv.exe时,我会得到相同的响应。
@cls
@if not "%1" == "" (
@set PROCRUN_CMD=%1
) else (
@set PROCRUN_CMD=TS
)
set APP_HOME=c:\myapp
set AGENT_HOME=%APP_HOME%\agent
set PROCRUN_EXEC=%APP_HOME%\procrun\amd64\prunsrv.exe
set AGENT_SERVICE_NAME=My-Agent
set SERVICE_LOG_PATH=%AGENT_HOME%\logs\windows
%PROCRUN_EXEC% %PROCRUN_CMD% %AGENT_SERVICE_NAME% ^
--Install="%PROCRUN_EXEC%" ^
--Description="My Service" ^
--Classpath="%AGENT_HOME%\MyApp.jar" ^
--StartClass=org.MyOrg.MyApp ^
++startParams="-s;%AGENT_HOME%\conf\settings.json" ^
--StartMode="java" ^
--Startup="auto" ^
--StopClass=java.lang.System ^
--StopMethod=exit ^
--StopMode=jvm ^
--logPath="%SERVICE_LOG_PATH%" ^
--StdOutput="%SERVICE_LOG_PATH%\service-stdout.txt" ^
--StdError="%SERVICE_LOG_PATH%\service-stderr.txt" ^
--LogLevel="Debug"
@echo.所以我在这里遗漏了什么导致了这个问题?我找不到其他答案了。
发布于 2015-12-22 22:25:19
之所以会这样做,是因为我在procrun命令中没有//s。(同样,正如我令人敬畏的老板所指出的,在startParams和logPath上,这种情况是错误的。是我的错。但在这种情况下,它可能会帮助到其他人。
https://stackoverflow.com/questions/34423508
复制相似问题