Предполагаемая машина не имеет подключения к Интернету, и я не хочу ее загружать в фиксированном месте.Как загрузить DTD из файла jar?
Цель: загрузить DTD из фляги, банку будет зависимость.
Предполагаемая машина не имеет подключения к Интернету, и я не хочу ее загружать в фиксированном месте.Как загрузить DTD из файла jar?
Цель: загрузить DTD из фляги, банку будет зависимость.
Чтобы загрузить любой файл из пути к классам (это пространство, где Youre классы находятся, как правило, куча банок), вы можете сделать:
InputStream is = this.getClass().getResourceAsStream("my/package/ResourceFile.dtd");
И тогда вы можете использовать входной поток, где вы хотите ,
Примечание: getResourceAsStream() загружает ресурс с помощью загрузчика классов, загружающего класс. Если вы создаете приложение, любой класс из вашего приложения (и, следовательно, загружается одним и тем же загрузчиком классов с вашими баночками) будет в порядке.
Нет стандартного способа предоставления локального кеша (если я правильно помню) DTD.
Следовательно, вам нужно будет исследовать парсер, который будет использовать локальные копии, и использовать его нестандартный API конфигурации, чтобы сообщить об этих локальных копиях, чтобы избежать поездки в сеть.
Используйте метод getResourceAsStream() для выбора записей из пути к классам.
И как я могу указать JMXB Unmarshaller использовать этот InputStream? –
Не знаю о JAXB. Есть вопросы и ответы об отключении проверки DTD. Может быть, это помогает. http://stackoverflow.com/questions/9909465/how-to-disable-dtd-fetching-using-jaxb2-0 – helios