Я пытаюсь проверить, что XML-файл не распакован в веб-приложении. Сам файл xml находится за пределами каталога развертывания веб-приложения, и соответствующий XSD упакован в WAR, в classpath, в WEB-INF / classes / com / moi
Мне не удалось выяснить, как создать объект Schema, чтобы он выбирал XSD-файл относительно пути к классам по сравнению с жестким кодированием пути относительно рабочего каталога. Я хочу подобрать его относительно пути к классам, чтобы найти его при развертывании приложения (а также при запуске из модульного теста). Пример кода ниже, который работает, ищет его относительно рабочего каталога.
JAXBContext context;
context = JAXBContext.newInstance(Foo.class);
Unmarshaller unMarshaller = context.createUnmarshaller();
SchemaFactory sf = SchemaFactory.newInstance(XMLConstants.W3C_XML_SCHEMA_NS_URI);
Schema schema = sf.newSchema(new File("src/com/moi/foo.xsd"));
unMarshaller.setSchema(schema);
Object xmlObject = Foo.class.cast(unMarshaller.unmarshal(new File("C:\\foo.xml")));
return (Foo) xmlObject;
Среда использует JAXB2 / JDK 1.6.0_22 / JavaEE6. Мысли