2014-02-09 70 views
1
import java.io.*; 

public class chk 
{ 
    String className; 
    String command,command1,command2; 
    public String getMsg(String fileName,File Path1) 
    { 
     String dir; 
     command = "tcc "+fileName; 
     String output = executeCommand(command,Path1); 
     if(output.compareTo("")==0)    
      output = "Compilation Successfull!!"; 
     return output; 
    } 

    private String executeCommand(String command,File Path1) 
    { 
     StringBuffer output = new StringBuffer(); 
     Process p; 
     try 
     { 
      p = Runtime.getRuntime().exec(command,null,Path1); 
      p.waitFor(); 
      BufferedReader reader1 = new BufferedReader(new InputStreamReader(p.getErrorStream())); 
      BufferedReader reader2 = new BufferedReader(new InputStreamReader(p.getInputStream())); 
      String line = "";   
      while ((line = reader1.readLine())!= null) 
      { 
       output.append(line + "\n"); 
      } 
      while ((line = reader2.readLine())!= null) 
      { 
       output.append(line + "\n"); 
      } 
     } catch (Exception e) 
     { 
      e.printStackTrace(); 
     } 
     return output.toString(); 
    } 

    public static void main(String args[])throws IOException 
    { 
     String x; 
     File dir=new File("D:\\test"); 
     chk ob = new chk(); 
     x = ob.getMsg("hello.c",dir); 
     System.out.println("OUtput : "+x); 
    } 
} 

ERROR從Java類編譯C文件

enter image description here

我試圖編譯從Java類中的C代碼。我正在使用Turbo C/C++編譯器,並且還設置了其路徑,即「C:/ TC/bin」,即使我的程序正在編譯時,我直接從命令提示符編譯它們,但是當我嘗試使用java文件編譯它時出現錯誤消息。幫幫我!!

+0

@TonythePony我應該使用哪種編譯器在Windows上運行? – rick

+0

MinGW很受歡迎(免費):http://www.mingw.org/ –

+0

@TonythePony會解決這個問題嗎? – rick

回答

2

添加缺少的導入後,您的代碼看起來很不錯:import java.io.*;但是,看起來您使用的是一種非常舊的編譯器,它適用於16位/ DOSWindows,可能是它不適合您的原因。

嘗試使用像GCC這樣的現代編譯器,而對於Windows,您需要使用MinGW這是爲Windows構建的GCC編譯器的一個版本。我使用GCC 4.8.2(MinGW)試過你的代碼,它工作正常。

另一種選擇是使用Microsofts Visual C++編譯器,它也可以從命令行運行(但是請注意,它僅支持C89,其中一些功能來自後來的標準)。

+0

@rick通過MinGW項目,是的。 – SevenBits

+0

ok下載MinGW ... – rick

+1

@rick要在你的程序中使用GCC,你需要將'command =「tcc」+ fileName;'改爲'command =「gcc」+ fileName; – jpw