0
我有一個java jar文件,它會調用一個java程序(命令)。Runtime.getRuntime()。exec掛起
命令生成工作正常,當我運行它在命令promt。
Process proc = Runtime.getRuntime().exec("cmd.exe /C "+ Command);
BufferedReader stdIn = new BufferedReader(new
InputStreamReader(process.getInputStream()));
BufferedReader stdErr = new BufferedReader(new
InputStreamReader(process.getErrorStream()));
String output=null;
while((output=stdIn.readLine())!=null)
{
System.out.println("output is:"+output);
out.write(output);
out.newLine();
}
while((output=stdErr.readLine())!=null)
{
System.out.println("error output is:"+output);
out.write(output);
out.newLine();
}
try {
process.waitFor();
....
....
....
我試過的ProcessBuilder:
ProcessBuilder proc = new ProcessBuilder("cmd.exe", "/C", Command); proc.redirectErrorStream(true);
proc.start();
但是,這將引發錯誤爲:
java.io.IOException: Cannot run program "java -Xmx1024M ......"
CreateProcess error=2, The system cannot find the file specified
我可以在其中PROMT作品精絕運行相同的命令。
謝謝Marko。命令是這樣的:「java -Xmx1024M -Djava.util.logging.file =」log // logs.txt「-classpath lib \ tool.jar; lib \ solver.jar com.tool.section.MainFunc -parameter redo section logo.propery C:\ SectionTool「我不知道如何將它傳遞給ProcessBuilder:( – kino
Somethnig like'(」cmd.exe「,」/ c「,」java「,」-Xmx1024m「,」-Djava。 util.logging.file = log/logs.txt「,等等。 –
Thanks Marko。(啊..我剛看到一個代碼流,看到我們需要跟上現在的相同代碼..意思是我們需要使用Process proc = Runtime.getRuntime()。exec(「cmd.exe/C」+ Command);才能找到一個解決方案,這是因爲很多代碼已經使用BufferedReader寫入,如果我們使用BufferedReader,必須重寫ProcessBuilder。我們可以通過這種方式解決什麼問題? – kino