загрузить файл (xml) из пути к классам в весеннем веб-приложении

Я хотел бы взять файл xml из моего пути к классам, чтобы разархивировать его и использовать для целей тестирования. Моя проблема состоит в том, чтобы получить его как InputStream. Я написал эти строки, но всегда получаю нулевой результат.

InputStream is = getClass().getResourceAsStream("WebContent/WEB-INF/classes/testing/"+ COMPLETE_DOCUMENT + ".xml");

Конечно, путь, который вы видите в аргументе метода, — это путь к моему файлу. Я пробовал несколько комбинаций:

WebContent/WEB-INF/classes/testing/
classpath:testing/
classpath*:testing/

, но всегда получаю InputStream = null.

Я даже пытался переключиться на

 ClassLoader.getResourceAsStream(...)

, но ничего не происходит. Я предполагаю, что путь к ресурсу какой-то неправильный, но я не могу понять, где. Из моего сервлета.xml я использую некоторый ресурс в пути к классам, настраивая PropertyPlaceholderConfigurer или Jaxb2Marshaller только с синтаксисом

"classpath:folder/file.xsd"

, и он отлично работает. Папка, из которой я хочу загрузить свой xml, является родственной той, что в приведенном выше примере. Что мне не хватает?

РЕДАКТИРОВАТЬ: Я пытаюсь следовать подходу вспомогательного класса Spring ClassPathResource и получаю странное поведение: как я уже говорил, у меня уже есть некоторые ресурсы, загруженные из пути к классам некоторыми компонентами Spring при запуске. Если я использую путь к таким ресурсам в коде, предложенном dardo, следующим образом:

ClassPathResource cpr = new ClassPathResource("xmlschemas/lrinode.xsd");
InputStream is = cpr.getInputStream();

Я все еще получаю Исключение FileNotFound! Конечно, "xmlschemas/lrinode.xsd" — это xsd, который я успешно загружаю при запуске. Не работает, даже если я использую полный путь к ресурсу, начиная с корня приложения.

Мне начинает казаться, что я упускаю что-то тривиальное.

11
задан MaVVamaldo 3 March 2012 в 11:29
поделиться