从java类编译C文件

时间:2014-02-09 20:19:32

标签: java c windows compilation

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

enter image description here

我正在尝试从java类编译C代码。我正在使用Turbo C / C ++编译器并且还设置了它的路径,即“C:/ TC / bin”,即使我的程序正在编译时,我直接从命令提示符编译它们,但当我尝试用java文件编译它时,出现错误消息。 HELP !!

1 个答案:

答案 0 :(得分:2)

添加缺少的导入后,您的代码似乎很好:import java.io.*;但是您似乎正在使用为16位/ DOSWindows制作的非常旧的编译器,这可能是它不适合您的原因

尝试使用像GCC这样的现代编译器,对于Windows,您需要使用MinGW,它是为Windows构建的GCC编译器的一个版本。我使用GCC 4.8.2(MinGW)尝试了你的代码,它工作正常。

另一种选择是使用Microsofts Visual C ++编译器,它也可以从命令行运行(但请注意,它只支持C89,以及后来标准中的一些功能)。