从sts / eclipse中调用不同语言的编译器

时间:2014-04-20 05:27:28

标签: java compiler-construction invoke

我遇到用户将文件发布到服务器并且需要在服务器端编译的情况。服务器应检测语言并调用相应的编译器并将结果发送回客户端。现在我们正在支持Java,Python和C.有没有办法可以编译一个未从eclipse中导入eclipse的Java文件?而且,有没有一种方法可以在eclipse中调用python和C(或任何其他语言可以使用)的编译器?

1 个答案:

答案 0 :(得分:1)

当您检测到代码的语言时,这变得非常简单:

String compiler = "";

switch(compilerCode)
{
    case JAVA:
        compiler = "javac";
    break;
    case C:
        compiler = "javac";
    break;

    ...
 }


 Process p = Runtime.getRuntime().exec(compiler + " " + file);
 p.waitFor();

file将是您尝试编译的文件的名称,compilerCode将是一个代码,它将告诉您使用哪个编译器。

这是不言而喻的,但您应该安装所有编译器来编译您打算支持的所有语言。


编辑:

从正在运行的进程中获取错误消息非常容易。您所需要做的就是:

InputStream in = p.getErrorStream();
BufferedReader reader = new BufferedReader(new InputStreamReader(in));
...
String error = reader.readLine();
...
reader.close();