2012-09-09 24 views
0

編譯的C代碼,我想下面的代碼編譯外部C程​​序與Java程序從Java程序

import java.io.BufferedReader; 
import java.io.IOException; 
import java.io.InputStreamReader; 

public static void main(String[] args){ 
    try{ 
     Runtime rt=Runtime.getRuntime(); 
     Process pr=rt.exec("cmd /c PATH=%PATH%;c:\\TC\\BIN"); 
     pr=rt.exec("cmd /c c:\\TC\\BIN\\TCC.exe c:\\TC\\EXAMPLE.c"); 
     pr=rt.exec("c:\\TC\\EXAMPLE.exe"); 
     BufferedReader input=new BufferedReader(new InputStreamReader(pr.getInputStream())); 
     String line=null; 

     while((line=input.readLine())!=null){ 
      System.out.println(line); 
     } 
     int exitVal=pr.waitFor(); 
     System.out.println("exited with error code "+exitVal); 
    } 
    catch(Exception e){ 
     System.out.println(e.toString()); 
     //e.printStackTrace(); 
    } 
} 
} 

,但我得到:

產生java.io.IOException:不能運行程序「C:\ TC \ EXAMPLE.exe」:CreateProcess的錯誤= 2,系統找不到指定的文件

編譯過程不能正常工作,所以我還能做我的編譯C代碼?

回答

1

我認爲你有機會生成之前調用編譯的程序。 你應該等待召喚:

pr=rt.exec("cmd /c c:\\TC\\BIN\\TCC.exe c:\\TC\\EXAMPLE.c"); 

要完成你嘗試調用編譯後的輸出之前。

+0

所以我需要使用一些等待命令來使相同的程序能夠編譯和執行代碼? – user1617085

+0

你可以直接調用rt.waitFor()它會等待進程結束並給出線程的退出值。 – JTMon

3

請爲此使用Processbuilder API,文檔中有一個如何使用各種標誌的示例。