У меня есть java-файл jar, который inturn вызывает java-программу (команду).Runtime.getRuntime(). Exec Hangs
Сгенерированная команда отлично работает, когда я запускаю ее в команде 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
я могу запустить ту же команду в ПРОМТ, которая работает абсолютно нормально.
Thank you Marko. Команда такова: «java -Xmx1024M -Djava.util.logging.file =« log // logs.txt »-classpath lib \ tool.jar; lib \ solver.jar com.tool.section.MainFunc -параметр повторного раздела logo.propery C: \ SectionTool «Я не уверен, как передать это в ProcessBuilder сейчас :( – kino
Somethnig like' ("cmd.exe", "/ c", "java", "-Xmx1024m", "-Djava. util.logging.file = log/logs.txt ", и т. д. –
Спасибо Марко.: (ах .. я только что видел поток кода и вижу, что нам нужно следить за тем же кодом, что и сейчас .. означает нам нужно найти решение с Process proc = Runtime.getRuntime(). exec («cmd.exe/C» + Command), только потому, что много кодов уже было написано с использованием BufferedReader, которые придется переписывать, если мы будем использовать ProcessBuilder.К любым способом мы могли бы справиться с этим? – kino