2017-01-16 12 views
1

Есть ли что-то волшебное в папке с именем «ресурс» в отличие от чего-то еще. У меня есть файл в «ресурсе», и когда я пытаюсь его загрузить, он работает нормально.Имя папки ресурса Java Versus Some Other Name

ClassLoader loader=Thread.currentThread().getContextClassLoader(); 
InputStream propFile=loader.getResourceAsStream("KCBSEvents/resource/build.properties"); 

Я пользуюсь prop.load (propFile) для загрузки свойств.

Когда я пытаюсь использовать аналогичную логику для загрузки изображения из каталога с именем «Изображения», он терпит неудачу. Обе каталоги находятся на одном уровне с моим деревом.

ClassLoader loader=Thread.currentThread().getContextClassLoader(); 
java.net.URL logoURL=loader.getClass().getResource("KCBSEvents/Images/KCBSLogo.jpg"); 

В результате «logoURL» имеет значение NULL. Я могу только заключить, что либо есть что-то волшебное в названии каталога «resource», либо «getResource» работает иначе, чем «getResourceAsStream». Может кто-нибудь объяснить, что происходит? ТИА.

+0

Ну, получить ресурс, поскольку поток возвращает поток, но может быть связан: http://stackoverflow.com/questions/6608795/what-is-the-difference-between-class-getresource-and-classloader-getresource –

+1

Возможно вы должны поместить папку изображений в папку ресурсов? –

+0

Что вы хотите иметь, URL или? –

ответ

0

В случае, если кто-то еще сталкивается с этим, я, наконец, понял это. Мне нужно было использовать поток байтов для логотипа.

ClassLoader loader=Thread.currentThread().getContextClassLoader(); 
logo = new JLabel(new ImageIcon(ImageIO.read(loader.getResourceAsStream("KCBSEvents/Images/KCBSLogo.jpg")))); 

Это не имело никакого отношения к папке, в которой находился файл jpg.