.cshスクリプトを実行して、その出力をStringBufferに読み込もうとしています。 コンソールからスクリプトを実行すると出力が返されますが、出力は空に戻ります。同じ実行中のフローが出力を返すこともありますが、プロセスが開始される方法(同じスクリプト、パス、引数)で何も変更されず、スクリプトも変更されないことがあります。 例外がスローされません。 出力が正しく読み込まれるようになるにはどうすればよいでしょうか? は、コードセグメントが外部プロセスからの出力を読み取る
public static String getOutpoutScript(Process p) {
InputStream outpout = p.getInputStream();
logger.info("Retrived script output stream");
BufferedReader buf = new BufferedReader(new InputStreamReader(outpout));
String line = "";
StringBuffer write = new StringBuffer();
try {
while ((line = buf.readLine()) != null) {
write.append(line);
}
} catch (IOException e) {
// do something
}
return write.toString().trim();
}
ストリームを閉じていない事実はよくないです横に、このまたはコードで何か他のものは、いくつかの状況下で正しく読まれてからの出力を妨げる可能性があるだろうか?
おかげで、
(あなたがそのp.getInputStreamを見るためにデバッグが)は常に同じであり、 'output'が正しく割り当てられていますか? – MarioDS
http://stackoverflow.com/questions/10365402/java-process-invoked-by-processbuilder-sleeps-forever/と同じ問題が発生する可能性があります – Attila