У меня есть веб-приложение, работающее в стеке LAMP, которое позволяет пользователям записывать 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
Других решений пока нет …