2012-07-11 45 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 2012-07-11 22:02:38

+0

@Prim:是的,你是對的:這是一個可能的重複[如何從我的Java應用程序運行批處理文件?](http://stackoverflow.com/questions/615948/how-do-i-run-a-batch-file-from-my-java-application)和可能應該關閉。 – 2012-07-11 22:19:13

+0

對不起,我正在尋找一點,從來沒有找到一個工作的答案。該鏈接確實與Hovercraft在下面發佈的內容有所幫助。只需要cmd.exe/c「開始」msys.bat。謝謝你們兩位! – 2012-07-12 02:32:50

回答

4

.bat文件無法自行運行,並在Windows命令處理器上調用。所以不要忘記加載Windows命令處理器,cmd.exe在bat文件之前。

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

編輯
請檢查出與此過程中發生的技巧和陷阱這個有用的文章:when runtime.exec() won't。這篇文章中的代碼有點過時,但是今天的概念與當時的密切相關。強烈建議。

+0

謝謝,不知道關於批處理文件。 – 2012-07-12 02:33:44

+0

@DanGerendasy:你很受歡迎。請查看警告,儘管通過編輯我的答案中的鏈接可以運行Java以外的進程。 – 2012-07-12 03:52:29