Вопрос, назревший по следам
вот этогоАвтор: Artem Korneev
Дата: 20.06.18
обсуждения.
Для сборки плагина из исходников в рантайме пока пробую использовать Java Compiler API, благо он всё-таки идёт "из коробки" и не требует никаких дополнительных телодвижений. Всё колдовство начинается с простой строчки:
var compiler = ToolProvider.getSystemJavaCompiler();
Ну и, собственно, тут вот и начинаются проблемы.
В тестовом консольном приложении — всё работает, вызов возвращает ссылку на какой-то объект. Использовать тот объект пока не пробовал, но ссылка не нулевая. Ровно та же строчка кода, запущенная в приложении на Spring, возвращает null. Ну, наверное, логично — приложение, запущенное через Spring, скорее всего, имеет какие-то ограничения в плане доступа к основной системе. Безопасность там и вот это вот всё.
Собственно, вопрос. Как бы всё нужное окружение "упаковать" в Spring-приложение, чтоб всё это заработало? В документации к Java Compiler API говорится, что оно идёт с модулем JDK.compiler:
https://docs.oracle.com/javase/10/docs/api/jdk.compiler-summary.html
Ну или хоть ткните, в какую сторону читать.. во внутренних премудростях Spring — пока не силён.
Собственно, потому и ковыряюсь с этими экспериментами, чтоб лучше понять эти нюансы.