Это достаточно коротко, как это, но я, вероятно, перенесся бы, это в некоторого помощника функционирует с ясным именем. Тем путем более очевидно, что продолжается, и Вы не должны будете повторять, что логика во всех шаблонах, где Вам нужен он.
Метод javax.tools.JavaCompiler # getTask () принимает параметр options
, который позволяет установить параметры компилятора. Следующее сообщение описывает простой способ их установки для доступа к пути к классам вызывающей программы:
Вам необходимо настроить стандартную java файловый менеджер, чтобы узнать о jar-файлы - вы используете компилятор аргумент options для этого.
По умолчанию объект компилятора java только кажется знает о дефолте места для bootclasspath, extdirs и одобренные каталоги в терминах пути к классам.
Вам необходимо добавить вызывающую программу текущий путь к классам компилятора java экземпляра, который передается стандартный файловый менеджер, который затем найдите классы в файлах jar.
Вот как я это делаю в компиляторе написал я оболочку
Список
optionList = new ArrayList (); // устанавливаем путь к классам компилятора таким же, как у среды выполнения optionList.addAll (Arrays.asList ("- путь к классам", System.getProperty ("java.class.path"))); // любые другие варианты, которые вы хотите optionList.addAll (Arrays.asList (параметры)); JavaCompiler.CompilationTask task = compiler.getTask (out, jfm, диагностика, optionList, null, jfos);
Все, что вам нужно, это установить правильный путь к классам при запуске вызывающей программы.