Может ли Xerces Java Parser загрузить ресурс из ClassPath и запустить его с исполняемым файлом Jar?

Я хочу проверить файл xml на файл схемы xs. Теперь я предоставляю XML-файл в качестве аргумента командной строки. и мне нужно сохранить мой файл схемы внутри моего пути к классам.

Для этого я использовал парсер Xerces (2_11_0) для java.

Я сохранил файл схемы внутри пакета и добавил эту папку в свой путь к классам.

String SCHEMA = this.getClass().getResource(SCHEMA_NAME).getFile();
parser.setProperty("http://apache.org/xml/properties/schema/external-noNamespaceSchemaLocation", SCHEMA);

Когда я запускаю код внутри eclipse, он работает как шарм, но проблема возникает, когда я экспортирую свой проект в виде исполняемого файла jar.

Я пытаюсь запустить банку, и она не может найти файл SCHEMA.

файл:/C:/MY_JAR!/PACKAGE/SCHEMA_FILE.xsd

Может ли кто-нибудь сообщить мне причину, по которой это не работает из исполняемого файла jar, и решение для него?

Дайте мне знать, если потребуется дополнительная информация.

Спасибо


person user1584499    schedule 20.01.2011    source источник


Ответы (1)


Это потому, что URL-адрес для this.getClass().getResource(SCHEMA_NAME) теперь похож на jar:file:/C:/MY_JAR!/PACKAGE/SCHEMA_FILE.xsd. Посмотрите, будет ли работать простое использование this.getClass().getResource(SCHEMA_NAME).toString().

person kschneid    schedule 20.01.2011
comment
Он не работает и после преобразования в строку. Я запускаю java -jar my_jar.jar, и он дает тот же файл ошибки:/C:/MY_JAR!/PACKAGE/SCHEMA_FILE.xsd - person user1584499; 21.01.2011
comment
пожалуйста, отредактируйте исходный вопрос и добавьте трассировку стека. пожалуйста, также добавьте некоторый вывод для значения SCHEMA. - person kschneid; 21.01.2011