необычное поведение ClassLoader - PullRequest
       15

необычное поведение ClassLoader

1 голос
/ 07 сентября 2011
public InputStream getResourceAsStream ( Class className, String name){
       InputStream in = null;
       in = className.getClassLoader().getResourceAsStream(name);
       return in;
   }

className: загруженный класс с использованием Class.forName ().

name: имя ресурса, присутствующего в том же каталоге.

Проблема: результат всегда равен нулю.

Может кто-нибудь сказать мне, что не так с приведенным выше кодом, хотя я пробовал много способов.

Ответы [ 2 ]

1 голос
/ 07 сентября 2011

столкнулся с той же проблемой несколько дней назад сам. Но я обнаружил, что способ, которым я передал имя, был неправильным. Я имею в виду, я перепутал относительный путь и абсолютный путь. если он не может найти имя, он выдаст исключение nullpointerException.

Чтобы проверить, в порядке ли ваш код и проблема только с именем, просто жестко запишите полный путь к имени и убедитесь, что оно загружается. Если это так, то это просто проблема apath, которую вы должны исправить. Во-вторых, единственная другая проблема - если вы загружаете его из статического блока, синтаксис может немного отличаться. Еще не должно быть никаких проблем.

Хорошее место, где вы можете проверить загрузку файла: http://www.javaworld.com/javaworld/javaqa/2003-08/01-qa-0808-property.html?page=2

дайте мне знать, если это поможет ..

0 голосов
/ 09 сентября 2011

если все ваши изображения находятся в файле jar, то я предполагаю, что вы сделали бы отдельную папку изображений.Таким образом, вы можете получить доступ ко всем изображениям таким же образом, просто заменив имя изображения.Я верю, что после того, как вы сделали файл jar, в нем все взорвалось.если ваши изображения размещены в родительской папке, то есть com / demo / images, тогда вы можете просто использовать вышеупомянутый метод и указать полный путь, т.е.Есть лучший способ сделать это также.При развертывании на сервере вы можете создать отдельную папку изображений в качестве системного свойства, а затем просто выполнить system.getenv (prop_name), чтобы он мог сразу перейти к этому местоположению изображения.Есть несколько способов сделать это на самом деле.

...