Видимо, вы поместили ресурс в физически неправильном месте.
ExternalContext#getResourceAsStream()
, который делегирует в случае сервлет под одеялом до ServletContext#getResoruceAsStream()
, имеет свои корни в веб-содержимого WAR (родительскую папку /WEB-INF
и /META-INF
папки, таким образом, файлы в них также доступны таким образом) , и папку /META-INF/resources
всех JAR в /WEB-INF/lib
. В случае веб-приложения JSF это, как правило, XHTML, CSS, JavaScript и файлы изображений.
Другими словами, он возвращает веб-ресурсы. Он не возвращает ресурс файловой системы диска, для этого вам нужно вместо new FileInputStream()
. Он также не возвращает ресурс classpath, для этого вам нужно вместо ClassLoader#getResourceAsStream()
. Путь classpath имеет свой корень в a.o. /WEB-INF/classes
, все JAR-файлы в /WEB-INF/lib
и некоторые папки, настроенные на VM/сервер, в зависимости от среды выполнения.
В обычной файловой структуре веб-контента, файл ресурсов должен быть размещен именно здесь, чтобы получить его желаемый путь:
WebContent
|-- META-INF
|-- WEB-INF
| |-- faces-config.xml
| `-- web.xml
|-- myFile.png <-- Here.
:
Может помочь вам http://stackoverflow.com/questions/3160691/how-to-read-properties-file-in-web-application –