Apache procrunを試してみると、理解できない動作が見られます。要約するとmain
、例外をスローする Java プログラムのメソッドです。これはどこにも記録されず、Windows サービスは停止しません。さらに調査するために、main
方法を次のように変更しました
public static void main(String[] args) throws Exception {
if (args.length<10000000) {
throw new Exception("one exception right away");
}
...
}
これをサービスとしてインストールしてprunsrv.exe
起動すると、問題なく起動し、ログ出力はまったく生成されません。特にサービスは停止しません。
参考までに、procrun を使用してサービスをインストールする方法を次に示します。
& $procrun "//$operation//$service" `
--DisplayName="$service" `
--Description="$service" `
--DependsOn="$depends" `
--Startup=auto `
--Install="$procrun" `
--Jvm="$JVM" `
--Classpath="$cp" `
--Environment="PATH=$env:JAVA_HOME\bin" `
--JavaHome="$env:JAVA_HOME" `
--StartPath="c:\Search" `
--JvmOptions="-Xmx512M;-Xms512M;-Djava.awt.headless=true" `
--StartMode="jvm" `
--StartClass="$classname" `
--LogPath="c:\Search\std-logs" `
--LogPrefix="procrun-$service" `
--LogLevel="Debug" `
--StdError="c:\Search\std-logs\stderr-$no0" `
--StdOutput="c:\Search\std-logs\stdout-$no0" `
--StartParams="(unused)"
サービスがすぐに停止し、stderr/stdout ファイルにいくつかのログ出力が見つかると予想していましたが、何もありません。誰でもこれを説明できますか?
編集:ああ、叫び、叫び、終了するのではなく、procrun
ツバメのようですjava.lang.Error
(私の場合)。java.lang.noClassDefFoundError