procrun を使用して Windows サービスとして登録しようとしている小さな Spring-boot ベースのアプリケーションがあります。残念ながら、procrun がアプリケーションの起動に失敗しているようです。
ここに私のメインクラスがあります:
public class Daemon {
public static void main(String[] args) throws IOException {
if ("start".equals(args[0])) {
start(args);
} else if ("stop".equals(args[0])) {
stop(args);
}
}
public static void start(String[] args) {
Application.main(new String[0]);
}
public static void stop(String[] args) {
}
}
これが私のインストールバットです:
set "CURRENT_DIR=%cd%"
set "APPLICATION_SERVICE_HOME=%cd%"
echo %APPLICATION_SERVICE_HOME%
set SERVICE_NAME=cmsapi
set EXECUTABLE_NAME=%SERVICE_NAME%.exe
set EXECUTABLE=%APPLICATION_SERVICE_HOME%\%EXECUTABLE_NAME%
set CG_START_CLASS=com.castsoftware.analyser.Daemon
set CG_STOP_CLASS=%CG_START_CLASS%
set CG_PATH_TO_JAR_CONTAINING_SERVICE=%APPLICATION_SERVICE_HOME%\..\..\CAST-CMSAPI.jar
set CG_STARTUP_TYPE=auto
set PR_CLASSPATH=%APPLICATION_SERVICE_HOME%;%CG_PATH_TO_JAR_CONTAINING_SERVICE%
set CG_PATH_TO_JVM="%JAVA_HOME%\jre\bin\server\jvm.dll"
set EXECUTE_STRING= %EXECUTABLE% //IS//%SERVICE_NAME% --Startup %CG_STARTUP_TYPE% --StartClass %CG_START_CLASS% --StopClass %CG_STOP_CLASS%
call %EXECUTE_STRING%
set EXECUTE_STRING= "%EXECUTABLE%" //US//%SERVICE_NAME% --StartMode jvm --StopMode jvm --Jvm %CG_PATH_TO_JVM%
call %EXECUTE_STRING%
set EXECUTE_STRING= "%EXECUTABLE%" //US//%SERVICE_NAME% --StartMethod %CG_START_METHOD% --StopMethod %CG_STOP_METHOD%
call %EXECUTE_STRING%
set EXECUTE_STRING= "%EXECUTABLE%" //RS//%SERVICE_NAME%
call %EXECUTE_STRING%
echo The service '%SERVICE_NAME%' has been installed.
pause
現在取得しているログは次のとおりです。
[2016-04-25 10:02:36] [info] [85088] Commons Daemon procrun (1.0.15.0 64-bit) started
[2016-04-25 10:02:36] [info] [85088] Service cmsapi name
[2016-04-25 10:02:36] [info] [85088] Service 'cmsapi' installed
[2016-04-25 10:02:36] [info] [85088] Commons Daemon procrun finished
[2016-04-25 10:02:37] [info] [80396] Commons Daemon procrun (1.0.15.0 64-bit) started
[2016-04-25 10:02:37] [info] [80396] Updating service...
[2016-04-25 10:02:37] [warn] [80396] Failed to obtain service description
[2016-04-25 10:02:37] [info] [80396] Service 'cmsapi' updated
[2016-04-25 10:02:37] [info] [80396] Update service finished.
[2016-04-25 10:02:37] [info] [80396] Commons Daemon procrun finished
[2016-04-25 10:02:38] [info] [70552] Commons Daemon procrun (1.0.15.0 64-bit) started
[2016-04-25 10:02:38] [info] [70552] Updating service...
[2016-04-25 10:02:38] [warn] [70552] Failed to obtain service description
[2016-04-25 10:02:38] [info] [70552] Service 'cmsapi' updated
[2016-04-25 10:02:38] [info] [70552] Update service finished.
[2016-04-25 10:02:38] [info] [70552] Commons Daemon procrun finished
[2016-04-25 10:02:38] [info] [82616] Commons Daemon procrun (1.0.15.0 64-bit) started
[2016-04-25 10:02:38] [info] [82616] Running 'cmsapi' Service...
[2016-04-25 10:02:38] [error] [82616] StartServiceCtrlDispatcher for 'cmsapi' failed
[2016-04-25 10:02:38] [error] [82616] The service process could not connect to the service controller.
[2016-04-25 10:02:38] [error] [82616] Commons Daemon procrun failed with exit value: 4 (Failed to run service)
[2016-04-25 10:02:38] [error] [82616] The service process could not connect to the service controller.
[2016-04-25 10:03:08] [info] [ 8024] Commons Daemon procrun (1.0.15.0 64-bit) started
[2016-04-25 10:03:08] [info] [ 8024] Running 'cmsapi' Service...
[2016-04-25 10:03:08] [info] [85752] Starting service...
[2016-04-25 10:03:08] [error] [85440] FindClass com/castsoftware/analyser/Daemon failed
[2016-04-25 10:03:08] [error] [85752] Failed to start Java
[2016-04-25 10:03:08] [error] [85752] ServiceStart returned 4
[2016-04-25 10:03:08] [info] [ 8024] Run service finished.
[2016-04-25 10:03:08] [info] [ 8024] Commons Daemon procrun finished
基本的に、procrun は私のメイン クラスを見つけられないように見えますが、すぐそこにあります。この時点で何が間違っているのかわかりません