Реализация ClassLoader.getResource (String) без обработчика протокола - PullRequest
4 голосов
/ 22 августа 2011

Мой загрузчик классов разрешает ресурсы для источника, у которого нет обработчика URL, например, он получает ресурсы из базы данных. Это, конечно, создает проблему для ClassLoader.getResource (String), который возвращает URL. Для работы URL.openConnection () и т. Д. Мне нужен обработчик протокола, который создает дополнительную проблему. Как можно сопоставить URL-адрес с моим поставщиком данных без установки специального обработчика протокола Url, который требует от меня установки системного свойства при запуске. Проблема с обработчиками протокола URL заключается в том, что они статические и должны быть установлены при запуске, в то время как загрузчики классов являются динамическими и могут поступать из разных мест.

Есть ли способ решить эту проблему элегантно без обработчика протокола?

1 Ответ

2 голосов
/ 22 августа 2011

Ну, если вы сами реализуете ClassLoader.getResource(String), вы не можете использовать конструктор для URL, который принимает обработчик протокола в качестве одного из аргументов?

public URL(String protocol,
           String host,
           int port,
           String file,
           URLStreamHandler handler)
    throws MalformedURLException
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...