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