2016-03-30 4 views
1

試してみるApache procrun私は理解できない動作をしています。それは、例外をスローするJavaプログラムのmainメソッドにまで下がっています。これはどこにも記録されず、Windowsサービスは停止しません。私はそれをprunsrv.exeでサービスとしてこれをインストールして起動すると、私はprocrun in --StartMode =例外をスローするメインを実行しているJvmが終了しない

public static void main(String[] args) throws Exception { 
    if (args.length<10000000) { 
    throw new Exception("one exception right away"); 
    } 
    ... 
} 

main方法を変更し、さらに調査するために、それは問題なく起動し、一切のログ出力を生成しません。特に、サービスは止まらない。

は参考のため、ここではサービスが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)" 

は、私は、サービスをすぐに停止することを期待し、私はいくつかのログ標準エラー出力/標準出力ファイルに出力するが、何も見つけただろう。誰もこれを説明できますか?

EDIT:私のああ、それは代わりに、叫んで叫んと出の(私の場合java.lang.noClassDefFoundError中)procrunツバメjava.lang.Errorのように思えます。

答えて

0

メインの周りにcatch(Throwable)をラップした後に、何がポップアウトしてから再投げずに終了したのかを記録したところ、問題がわかりました。私はjava.lang.NoClassDefFoundErrorを持っています。

ボトムライン:procrunはエラータイプの例外を呑み込んでいるようで、呼び出されたJavaプログラムにスローされた場合でも終了しません。

問題を作成しました:https://issues.apache.org/jira/browse/DAEMON-344

関連する問題