如何判断用户的java代码是否编译成功?

How to tell if a user's java code compiled successfully?

我在 LAMP 堆栈上有一个 Web 应用程序 运行,允许用户将 java 代码写入 HTML 表单,但这取决于是否代码编译成功,我想做不同的事情。

我目前的方式是 PHP 程序会使用用户的输入生成一个 .java 文件,在服务器上执行它(我已经处理了安全部分),然后检查是否有错误输出。

我知道 Java 使用 System.err 流打印错误,有没有办法让我知道它是否向控制台输出了任何内容?喜欢听和区分程序输出流的方法吗?

您可以检查 javac 退出代码。这是 javac 退出代码的列表:

static final int
    EXIT_OK = 0,        // Compilation completed with no errors.
    EXIT_ERROR = 1,     // Completed but reported errors.
    EXIT_CMDERR = 2,    // Bad command-line arguments
    EXIT_SYSERR = 3,    // System error or resource exhaustion.
    EXIT_ABNORMAL = 4;  // Compiler terminated abnormally

参考文献:http://bugs.java.com/view_bug.do?bug_id=7014715

自 Java 6 起,您可以编程方式调用 Java 编译器(如果提供)。 看到这个:ToolProvider#getSystemJavaCompiler