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);
    }
Другие вопросы по тегам