Я бы хотел взять xml-файл из моего classpath, чтобы разархивировать его и использовать для тестирования.Моя проблема состоит в том, чтобы получить его как 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(...)
, но ничего не происходит.Я предполагаю, что путь к ресурсу как-то неправильный, но я не могу понять, где.Из моего servlet.xml я использую некоторый ресурс в пути к классам, настраивая PropertyPlaceholderConfigurer или Jaxb2Marshaller только с синтаксисом
"classpath:folder/file.xsd"
, и он отлично работает.Папка, из которой я хочу загрузить свой xml, является родственной той, что в примере выше.Чего мне не хватает?
РЕДАКТИРОВАТЬ: Я пытаюсь следовать подходу весеннего вспомогательного класса ClassPathResource и получаю странное поведение: как я уже говорил ранее, некоторые ресурсы уже загружены из classpathнекоторые весенние бобы при запуске.Если я использую путь к таким ресурсам в коде, предложенном dardo, следующим образом:
ClassPathResource cpr = new ClassPathResource("xmlschemas/lrinode.xsd");
InputStream is = cpr.getInputStream();
Я все равно получаю FileNotFound Exception
!Конечно, "xmlschemas/lrinode.xsd"
- это xsd, который я успешно загружаю при запуске.Это не работает, даже если я использую полный путь к ресурсу, начиная с корня приложения.
Я начинаю думать, что упускаю что-то тривиальное.