Обычно два наиболее важных метода, которые вы должны переопределить в своем собственном загрузчике классов, это public Class findClass(String name)
и public InputStream getResourceAsStream(String name)
. Другие могут быть делегированы родительскому загрузчику классов в большинстве случаев. Это означает, что у вас должна быть особая цель переопределения getResources()
. Что это?
В любом случае вы можете легко добавить помещенный внутри регистратор, делегировать метод в родительский загрузчик классов и посмотреть, что запрашивается и возвращается родительским загрузчиком классов.
UPDATE
Если, согласно вашему комментарию, вы хотите загрузить классы / ресурсы из пути, сгенерированного во время выполнения , вы должны сделать следующее:
когда путь передается в загрузчик классов (скажем, /home/user1/
), он должен рекурсивно перечислять файлы, хранящие содержимое, в двух разных коллекциях - файлах классов и других файлах. Первая коллекция будет использоваться для загрузки классов, вторая - для ресурсов.
Для каждого файла в коллекции ресурсов вы определяете его путь к ресурсу в соответствии с http://docs.oracle.com/javase/6/docs/api/java/lang/ClassLoader.html#getResource%28java.lang.String%29 и получаете URL из файла: URL url = file.toURI().toURL();
Эти пути и URL вы сохраняете как ключ-> значение где-то на карте и используете их в рассматриваемом методе.
Что касается пути к ресурсу, я считаю, что он должен быть несколько относительно пути, который был передан вашему загрузчику классов: /home/user1/img/logo.gif
=> /img/logo.gif