Использование javax.tools.ToolProvider из пользовательского загрузчика классов?JAVA

Программисты JAVA общаются здесь
Ответить
Anonymous
 Использование javax.tools.ToolProvider из пользовательского загрузчика классов?

Сообщение Anonymous »

Кажется, невозможно использовать javax.tools.ToolProvider из пользовательского загрузчика классов, как того требует Ant или Webstart: https://bugs.java.com/bugdatabase/view_ ... id=6548428

Код: Выделить всё

javax.tools.ToolProvider.getSystemJavaCompiler()
загружает javax.tools.JavaCompiler в URLClassLoader, родительским элементом которого является системный загрузчик классов. API, похоже, не позволяет пользователям указывать родительский загрузчик классов.
Как можно использовать javax.tools.JavaCompiler из пользовательского загрузчика классов?
Например:
  • Ant загружает MyParserTask
  • Код: Выделить всё

    MyParserTask
    анализирует исходный код Java
  • Код: Выделить всё

    MyParserTask
    загружается AntClassLoader, который делегирует системному загрузчику классов
  • Код: Выделить всё

    javax.tools.JavaCompiler
    загружается URLClassLoader, который делегирует системному загрузчику классов
В дальнейшем MyParserTask вызывает:< /p>

Код: Выделить всё

javax.tools.CompilationTask task = compiler.getTask(...);
com.sun.source.util.JavacTask javacTask = (com.sun.source.util.JavacTask) task;
javacTask.parse().next().accept(visitor, unused); // parsing happens here
  • Поскольку эти два класса располагаются в отдельных загрузчиках классов, похоже, у MyParserTask нет способа взаимодействовать с JavacTask > без ошибок ClassCastException.
Есть идеи?

Подробнее здесь: https://stackoverflow.com/questions/231 ... lassloader
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «JAVA»