доступ к classpath из tomcat для динамической компиляции фрагментов кода - PullRequest
1 голос
/ 07 января 2012

У меня есть динамически генерируемые фрагменты кода Java, которые ссылаются на классы с открытым apis в пути к классам tomcat. Я могу правильно определить общедоступные API (методы) этих классов посредством отражения, но затем, после использования этой информации для генерации моего Java-кода, я должен был скомпилировать его с помощью API компилятора Java.

Возможно ли это? Нужно ли мне получить путь к классу, который tomcat использовал для загрузки моего сервлета, и передать его в API компилятора Java?

Andy

1 Ответ

1 голос
/ 07 января 2012

Вам нужно будет передать classpath. Этот код выполняет поиск пути к классам.

List<String> options = new ArrayList<String>();
options.add("-classpath");
StringBuilder sb = new StringBuilder();
URLClassLoader urlClassLoader = (URLClassLoader) Thread.currentThread().getContextClassLoader();
for (URL url : urlClassLoader.getURLs()){
    sb.append(url.getFile().replace("%20", " ")).append(File.pathSeparator);
}
options.add(sb.toString());

Параметры передаются в compiler.getTask

CompilationTask task = compiler.getTask (Writer, memoryManager, диагностика, , опции , классы, единицы компиляции);

...