ToolProvider.getSystemJavaCompiler() всегда возвращает ноль, используя jdk
Я прочитал все посты, касающиеся этой проблемы, и ни одно решение не работает для меня, я всегда получаю null
,
Я использую JRE и помещаю tools.jar в каталог lib, добавляю его в путь сборки, но когда я хочу перейти к объявлению, Eclipse хочет перейти в rt.jar (?), Чего я совершенно не понимаю.
Может ли это быть причиной того, что я получаю только null
? Как я могу настроить это правильно?
Каковы критерии для getSystemJavaCompiler()
вернуть ноль?
2 ответа
JRE - это среда выполнения Java. У него нет компилятора, и поэтому вы получаете null
, Если вы используете полноценный JDK, вы получите ненулевой результат.
Я нашел обходной путь для моей проблемы. Сначала я снова использовал jre. Я поместил tools.jar в каталог lib приложения.
ToolProvider.getSystemJavaCompiler () возвращает значение NULL.
Это обходной путь для получения JavaCompiler:
JavaCompiler compiler = ToolProvider.getSystemJavaCompiler();
if (compiler == null){
try {
Class<?> javacTool = Class.forName("com.sun.tools.javac.api.JavacTool");
Method create = javacTool.getMethod("create");
compiler = (JavaCompiler) create.invoke(null);
} catch (Exception e) {
throw new AssertionError(e);
}