0
inturn이 java 프로그램 (명령)을 호출하는 java jar 파일이 있습니다.Runtime.getRuntime(). exec Hangs
명령 프롬프트에서 실행할 때 생성 된 명령이 올바르게 작동합니다.
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는'("cmd.exe ","/ c ","java ","-Xmx1024m ","-Djava. util.logging.file = log/logs.txt ", 등등. –
감사의 말 Marko : (아 .. 저는 코드 플로우를 보았고 현재와 동일한 코드에서 후속 작업을 수행해야합니다. 우리는 Process proc = Runtime.getRuntime(). exec ("cmd.exe/C"+ Command); 만 사용하여 솔루션을 찾아야합니다. 이것은 BufferedReader를 사용하여 많은 코드가 이미 작성 되었기 때문에 사용하면 다시 작성해야합니다. ProcessBuilder. 이걸로 어떤 방법으로도 통과 할 수 있을까? – kino