как убедиться, что временный файл JAR доступен для загрузчика классов - PullRequest
1 голос
/ 20 марта 2012

У меня есть пользовательский загрузчик класса jar, который использует URLCLassLoader.Я должен прочитать содержимое фляги из базы данных и загрузить их.Есть несколько вопросов, связанных с этим.

  1. Могу ли я как-то загрузить все классы из потока байтов вместо того, чтобы сначала сохранить содержимое jar-файла из базы данных во временный файл и предоставить файл:// URL к загрузчику классов URL?

  2. , если ответ на поставленный выше вопрос - да, тогда загрузчик классов удостоверится, что он читает все файлы классов и ресурсы из потока байтовсразу, чтобы избежать ClassNotFoundError позже.

  3. , если ответ на Q1.нет.Затем, используя мой метод, я создал временный .jar из потока байтов базы данных и передал file: // URL-адрес для URLClassloader.Гарантирует ли URLClassloader, что файл по этому URL-адресу, будучи временным, не будет уничтожен до тех пор, пока он не будет использован, чтобы избежать ClassNotFoundException?

Любое другое решение вышеуказанной общей проблемы такжеДобро пожаловать.Заранее спасибо.

1 Ответ

1 голос
/ 20 марта 2012

Вы можете создать URL со своим собственным URLStreamHandler.Однако обычная реализация URLClassLoader сохранит содержимое во временный файл и будет использовать JarFile API.

Если вы создадите временный файл, в системе UNIX вы сможете удалить после открытия.В Windows вам нужно будет его сохранить, пока вы не закончили с загрузчиком классов.С Java SE 7 вы можете закрыть URLClassLoader.

...