2012-07-11 2 views
3

ProcessBuilder를 사용하여 java에서 msys.bat를 실행하려고합니다. 내 프로그램에서 .bat 파일을 실행할 때 다음 오류가 발생했습니다 : "rxvt.exe 또는 sh.exe 바이너리를 찾을 수 없습니다 - 중단합니다. 계속하려면 아무 키나 누르십시오." 여기 ProcessBuilder를 사용하여 msys.bat 실행

ProcessBuilder Msys = new ProcessBuilder("C:/msys/1.0/msys.bat", "/C", "find \"C:/Users/Dan G/Desktop/hello.elf\""); 

    Process p = Msys.start(); 

    String line; 
    BufferedReader r = new BufferedReader(new InputStreamReader(p.getInputStream())); 
    while ((line = r.readLine()) != null) { 
     System.out.println(line); 
    } 
    r.close(); 

목표는 광산의 일부 C 프로젝트를 컴파일하는 것입니다, 코드입니다. 저기있는 명령은 결과를 테스트하는 것이지, 내가 성취하고자하는 것이 아닙니다.

도움 주셔서 감사합니다.

+0

[대답] (http://stackoverflow.com/a/616014/617996) ... 가능한 복제본을보십시오 ... – PrimosK

+0

@Prim : 네가 맞아요. 이것은 가능한 중복입니다. [Java 응용 프로그램에서 배치 파일을 어떻게 실행합니까?] (http://stackoverflow.com/questions/615948/how-do-i-run-a-batch-file-from-my-java-application) 아마도 닫혀 야합니다. –

+0

죄송합니다. 조금만 찾고 있었지만 제대로 된 답변을 찾지 못했습니다. 이 링크는 호버 크래프트가 아래에 게시 한 내용과 약간의 도움이됩니다. cmd.exe/c "start"msys.bat 만 있으면됩니다. 둘 다 감사합니다! –

답변

4

.bat 파일을 단독으로 실행할 수없고 Windows 명령 프로세서에서 호출됩니다. 따라서 Windows 명령 프로세서도로드하는 것을 잊지 마십시오. cmd.exe는 bat 파일 앞에로드해야합니다. when runtime.exec() won't :

ProcessBuilder Msys = new ProcessBuilder("cmd.exe", "C:/msys/1.0/msys.bat", 
     "/C", "find \"C:/Users/Dan G/Desktop/hello.elf\""); 

편집
이 과정에서 발생할 팁과 트랩이 유용한 기사를 확인하시기 바랍니다. 이 기사의 코드는 약간 날짜가 있지만, 그 당시의 개념은 오늘날처럼 밀접한 관계가 있습니다. 적극 추천합니다.

+0

감사합니다. 배치 파일에 대해 알지 못했습니다. –

+0

@DanGerendasy : 대단히 환영합니다. 내 답변 편집 링크에서 외부 프로세스를 Java로 실행하는 것에 대한 경고를 참조하십시오. –

관련 문제