Я использую RelaxNG и Jing (валидатор RelaxNG на Java) для проверки некоторых файлов XML, и мне нужно объединить грамматики (повторное использование определений элементов в двух грамматиках).
Чтобы добиться слияния, я включаю грамматику с элементом, и я присвойте атрибуту href значение включенного файла грамматики:
<include href="embededGrammar.xml"/>
Все файлы грамматики расположены по одному и тому же пути в ресурсах моего проекта Java.
При тестировании приложения в среде IDE включенная грамматика найдена, и мои файлы данных XML проверяются.
Но когда я упаковываю приложение к файлу JAR, встроенная грамматика не найдена, и в сообщении об ошибке сообщается, что он пытается найти ее в том же месте, что и файл jar (не в файле jar в том же месте, что и грамматика внедрения, как это должно быть).
Я применил обходной путь, но я хотел бы внедрить чистое решение, поэтому, если кто-то решит такую проблему, сообщите мне, как это сделать.
Спасибо.
РЕДАКТИРОВАТЬ: он работает нормально, если я жестко запрограммирую значение href, чтобы указать на файл внутри файла jar (jar:file:./jarfile.jar/path/to/file/ebeddedGrammar.xml), но имя файла jar может измениться ( добавляется номер версии), кроме того, это невозможно протестировать в среде IDE.