에 ProcessBuilder를 가진 EXE 파일을 실행할 수 없습니다 :는 이런 식으로 몇 가지 매개 변수를 설정하는 동안 내가 exe 파일을 실행하려고 자바
myExePath -ini myIniPath -x myConfigFilePath
나는 그것이 완벽하게 작동 명령 줄에서 실행합니다. 하지만 Java 코드에서 실행하려고하면 프로세스가 시작되지만 잠시 후 더 이상 응답하지 않으므로 강제로 닫아야합니다. 이 자바 코드를 사용하고 있습니다 :
List<String> parameters = new ArrayList<String>();
parameters.add(myexePath);
parameters.add("-ini ");
parameters.add(myIniPath);
parameters.add("-x ");
parameters.add(myConfigPath
ProcessBuilder builder = new ProcessBuilder(parameters);
Process process = builder.start();
try {
process.waitFor();
} catch (InterruptedException e) {
System.err.println("Process was interrupted");
}
내가 뭘 잘못하고 있는거야?
스택 추적을 붙여 넣을 수 있습니까? –
waitFor()를 실행 한 후 프로세스가 응답하지 않고 작업 관리자에서 닫아야 만 Java 코드가 향상 될 수 있습니다. – schmimona
myExePath 자식 프로세스가 차단되고있는 것처럼 보입니다. 그것은 무엇을합니까? 완료하는 데 오랜 시간이 걸리는 이유는 무엇입니까? 별도의 콘솔 입력이 필요합니까? 별도의 콘솔 출력이 필요합니까? 그럴 경우 상위 프로세스의 표준 I/O 핸들을 상속하지 않아야 상위 프로세스의 표준 I/O 핸들을 차단하지 않습니다. Windows에서 익명 파이프를 통해이 작업을 수행 할 수 있습니다. 이것이 Java 7에서 이제 지원된다고 생각합니다. 이전 Java 버전에서는 JNI 또는 JNA를 사용하여 익명 파이프가있는 자식 프로세스를 만들어야했습니다. – ecle