Как загрузить XML-файл конфигурации с помощью FileInputStream, но получить исключение FileNotFoundException - PullRequest
1 голос
/ 06 февраля 2010

Мой путь сборки в Eclipse выглядит следующим образом:

ProjectName
   -- WEB-INF
      -- classes
         -- myClass.class
      -- configs
         -- myConfig.xml

Мой абсолютный путь к конфигурации в настоящее время выглядит следующим образом:

C: \ Разработка \ Java \ ProjectName \ WEB-INF \ конфиги \ myConfig.xml

Я использую JAXB для привязки, и он ожидает FileInputStream. FileInputStream должен быть потоком для файла конфигурации XML. Однако я не могу понять, как получить FileInputStream для моей конфигурации, и я продолжаю получать исключение FileNotFoundException.

Я хочу, чтобы эта конфигурация загружалась таким образом, чтобы кому-то не приходилось жестко кодировать путь к конфигурации, потому что я планирую выпустить проект с открытым исходным кодом. Я вижу много примеров, когда кто-то просто жестко кодирует полный абсолютный путь, но мне нужно, чтобы он был более гибким, «вот так»:

new FileInputStream ("/ WEB-INF / configs / myConfig.xml");

Спасибо!

Ответы [ 2 ]

4 голосов
/ 06 февраля 2010

Я бы рекомендовал вместо этого поместить myConfig.xml в каталог WEB-INF / classes и загрузить его через загрузчик классов, поскольку он находится в пути к классам. Вызов getResourceAsStream () в контексте сервлета вернет InputStream, который вы можете использовать. Он относительно корневого контекста, поэтому вы можете взять эту WAR и поместить ее куда угодно - ваш код все равно будет работать.

3 голосов
/ 06 февраля 2010

Вы можете довольно легко получить входной поток относительных путей в WEB-INF с помощью метода ServletContext.getResourceAsStream() (javadoc здесь ) и его вариантов.

Например, в своем коде selvlet вы можете сделать это:

getServletContext().getResourceAsStream("/WEB-INF/configs/myConfig.xml") // your file
getServletContext().getResource("/WEB-INF") // URL to WEB-INF dir
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...