Ответ 1
javax.tools.JavaCompiler # getTask() принимает параметр options
, который позволяет устанавливать параметры компилятора. Следующий message описывает простой способ установить их для доступа к пути класса вызывающей программы:
Вам необходимо настроить стандарт java файловый менеджер, чтобы узнать о jar files (s) - вы используете компилятор аргументы options для этого.
По умолчанию объект компилятора java только, кажется, знает о дефолте местоположения для bootclasspath, extdirs и одобренных каталогов в терминах его пути к классам.
Вам необходимо добавить вызывающую программу текущий путь к java-компилятору экземпляр, который передается на стандартный файловый менеджер, который будет затем найдите классы в файлах jar.
Вот как я это делаю в компилятор обертка, которую я написал
List<String> optionList = new ArrayList<String>(); // set compiler classpath to be same as the runtime's optionList.addAll(Arrays.asList("-classpath",System.getProperty("java.class.path"))); // any other options you want optionList.addAll(Arrays.asList(options)); JavaCompiler.CompilationTask task = compiler.getTask(out,jfm,diagnostics,optionList,null,jfos);
Все, что вам понадобится, это получить правильный путь к классу при запуске вызывающей программы.