그래, 여러 가지 방법으로 시도했지만 성공하지 못했습니다. 나는 커스텀 EXE를 실행하고 결과물을 얻고 싶다. 그것은 명령 프롬프트에서 잘 실행됩니다. "dir"이 잘 작동하지만 custom.exe는 작동하지 않습니다. 다음은 코드입니다.ProcessBuilder가 사용자 지정 실행 파일을 실행합니다.
List<String> command = new ArrayList<String>();
command.add("cmd"); // Even removed these two lines
command.add("/c"); // aka hail mary coding.
//command.add("dir");
command.add("custom.exe"); // even tried "c://custom.exe"
String line;
Process p = new ProcessBuilder(command).start();
BufferedReader input = new BufferedReader(new InputStreamReader(p.getInputStream()));
while ((line = input.readLine()) != null) {
System.out.println(line);
}
전혀 출력이 없습니다. 배치 파일에 배치하면 결과가 출력됩니다. % PATH %와 (과) 관련이 있다는 느낌이 들었습니다. 다시에서 ...
편집 -> 그래서 내가 코드 무슨 일이 일어나고보고,이 사용자 정의 EXE의 출력은 에러 간다 밝혀 :
List<String> command = new ArrayList<String>();
command.add(System.getenv("ProgramFiles(x86)") + "\\mydir\\custom.exe";
String line;
ProcessBuilder pb = new ProcessBuilder(command);
pb.redirectErrorStream(true);
Process p = pb.start();
BufferedReader input = new BufferedReader(new InputStreamReader(p.getInputStream()));
while ((line = input.readLine()) != null) {
System.out.println(line);
}
을 그리고 그것은 같이 작동 뜨거운 빌어 먹을. :)
cmd/c로 무엇을 달성하려고합니까? – Bringer128
"custom.exe"만 명령에 넣으려고 했습니까? Java가 자동으로 자식 프로세스의 stdin, stdout 및 stderr에 대한 스트림을 열 때 "cmd/c"가 필요하지 않습니다. – Bringer128
dir 명령에 "cmd/c"를 사용했는데 (예제에서 보았 듯이) 작동했습니다. "custom.exe"명령을 사용하거나 사용하지 않으려 고 시도했습니다. 어느 쪽도 효과가 없었다. – rtfminc