чтение XML-файла внутри jar-пакета - PullRequest
6 голосов
/ 31 марта 2010

Вот моя структура:

  • ком / MyCompany / ValueReader.class
  • ком / MyCompany / ресурсы / values.xml

Я могу прочитать файл в моем проекте Eclipse, но когда я экспортирую его в .jar, он никогда не может найти values.xml.

Я пытался использовать ValueReader.class.getResource () и ValueReader.class.getResourceAsStream (), но это не работает.

В чем здесь проблема? Как мне получить File-объект в мой values.xml?

B.

Ответы [ 4 ]

8 голосов
/ 31 марта 2010

Вы не можете получить объект File (поскольку он больше не является файлом, если он находится в .jar), но вы должны иметь возможность получить его как поток через getResourceAsStream(path);, где path - это завершить путь к вашему классу.

, например

/com/mycompany/resources/values.xml
2 голосов
/ 25 сентября 2014

Вы не можете получить File для файла, потому что он находится в jar-файле. Но вы можете получить входной поток:

InputStream in = ValueReader.class.getResourceAsStream("resources/values.xml");

getResourceAsStream и getResource преобразуют пакет класса в путь к файлу, а затем добавляют аргумент. Это даст поток для файла по пути /com/mycompany/resources/values.xml.

0 голосов
/ 25 сентября 2014

Это будет работать ...

Thread.currentThread().getContextClassLoader().getResource("com/mycompany/resources/values.xml")
0 голосов
/ 10 апреля 2013

Вы можете извлечь банку, затем взять то, что вы хотите, в том же пути к классам, используя:

    ZipInputStream zis = new ZipInputStream(new BufferedInputStream(new   
FileInputStream(zipfile.getCanonicalFile())));
...