Как задать путь к классу, когда я использую javax.tools.JavaCompiler компилирует исходный код?

StackOverflow https://stackoverflow.com/questions/1563909

Вопрос

Я использую этот класс javax.tools.JavaCompiler (jdk6) для компиляции исходного файла, но исходный файл зависит от некоторого файла jar.Как задать путь к классу javax.tools.JavaCompiler?

Это было полезно?

Решение

В javax.инструменты.JavaCompiler#Получение задачи() метод требует options параметр, позволяющий задать параметры компилятора.Следующее Сообщение описывает простой способ установить их, чтобы получить доступ к classpath вызывающей программы:

Вам необходимо настроить стандартный файловый менеджер Java, чтобы знать о файлах jar - вы используете компилятор для этого используется аргумент options.

По умолчанию объект компилятора java кажется, знает только о местоположениях по умолчанию для bootclasspath, extdirs и каталогов, одобренных dirs в терминах его classpath.

Вам нужно добавить вызывающую программу текущий путь к классу в компилятор java экземпляр, который передается в стандартный файловый менеджер, который будет затем находить классы в файлах jar.

Вот как я это делаю в компилятор оболочка, которую я написал

List<String> optionList = new ArrayList<String>();
// set compiler's 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);

Все, что вам тогда понадобится, - это правильно задать путь к классу при запуске вызывающей программы.

Другие советы

Недавно со мной возникла та же проблема, наконец я нашел два обходных пути.Вы можете задать путь к классу либо с помощью invoke StandardJavaFileManager.setLocation(Стандартное расположение.CLASS_PATH, "YOUR_CLASS_PATH") или Compiler.getTask(ARG_0, ARG_1, ARG_2, CLASS_PATH_OPTIONS, как указано в первом ответе, опубликованном здесь.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top