2017-01-25 12 views
2

ProcessBuilderを使用してJavaでjarファイルを実行しようとしています。現在、ProcessBuilderによって呼び出されたサブプロセスが例外をスローするたびに、ProcessBuilderは例外をキャッチせず、実行は継続して処理を続行します。以下はJavaのProcessbuilderがサブプロセス例外をスローアップしていません

は私のコードです:

try { 
ProcessBuilder pb = new ProcessBuilder("java", "-jar", CommonConstants.jarFileLocation, 
       fileEntry.getAbsolutePath(), CommonConstants.commonFileLocation);  
     Process p = pb.start();   
    } 
catch (Exception e) {   
     e.printStackTrace();  
    } 

catchブロックは、サブプロセスはいずれかをスローしたときに例外を印刷することとしています。しかし、それは決してしません。 何か不足していますか?

答えて

2

コンソールでの印刷のためにそれを行って....

を私は現在のJavaプロセスのものと同じになるように、サブプロセスの標準I/Oのためのソースおよび宛先を設定ProcessBuilderをinheritIO法を用いました。したがって

変更されたコード...

try { 
ProcessBuilder pb = new ProcessBuilder("java", "-jar", CommonConstants.jarFileLocation, 
       fileEntry.getAbsolutePath(), CommonConstants.commonFileLocation).redirectError(Redirect.INHERIT);  
     Process p = pb.start();   
    } 
catch (Exception e) {   
     e.printStackTrace();  
    } 

はしかし、それはcatchブロックでキャッチする必要があります。 ヘルプが必要です!

関連する問題