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