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

Java 从sts/eclipse中调用不同语言的编译器,java,compiler-construction,invoke,Java,Compiler Construction,Invoke,我遇到这样一种情况:用户将文件发布到服务器,需要在服务器端对其进行编译。服务器应该检测语言并调用相应的编译器,然后将结果发送回客户端。现在我们支持Java、Python和C。有没有一种方法可以编译一个Java文件,而不是从eclipse内部导入到eclipse中?还有,有没有一种方法可以从eclipse中调用python和C(或任何其他可以使用的语言)的编译器?当您检测到代码的语言时,这变得非常简单: String compiler = ""; switch(compilerCode) {

我遇到这样一种情况:用户将文件发布到服务器,需要在服务器端对其进行编译。服务器应该检测语言并调用相应的编译器,然后将结果发送回客户端。现在我们支持Java、Python和C。有没有一种方法可以编译一个Java文件,而不是从eclipse内部导入到eclipse中?还有,有没有一种方法可以从eclipse中调用python和C(或任何其他可以使用的语言)的编译器?

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

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();

我一直在类似的行下工作,如何从p中检索编译错误/运行程序的结果?对不起,我对使用这些东西完全陌生,谢谢@用户2707760这很简单,只需执行
p.getErrorStream()
并侦听输出即可。如果没有输出,则编译通常是成功的。它在java中工作得很好,但是当我尝试使用python时,它给出了一个“CreateProcess error=2,系统找不到指定的文件”错误。我确保路径指向我的python主目录。还有,你能帮我在成功编译时获得输出吗?我试着运行并取消结果,但它总是返回空字符串。抱歉搞混了,当我尝试运行该程序时,它会给我一个错误:无法找到或加载主类C:.users.CVallurupali.desktop.source.StringExample for java…实际上正在指定的路径中创建.class文件。