procrun“无法找到服务的注册表项'prunsrv'”

时间:2015-12-22 19:56:13

标签: java windows service procrun

我正在尝试使用procrun在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.

那么我在这里错过了什么导致了这个问题?我找不到其他答案。

1 个答案:

答案 0 :(得分:0)

之所以这样做是因为我没有在procrun命令周围使用//。 :( 另外,正如我的老板指出的那样,startParams和logPath的情况也是错误的。 我的错。但也许这会在同样的情况下帮助其他人。