2012-02-24 3 views
0

У меня есть куча иРепорт исходного кода (jrxml) местонахождение внутри рабочей области по следующему пути:Как читать файл jrxml внутри файла jar?

<project>/report/<jrxml_file> 

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

<jar_file>/report/<jrxml_file> 

В моем исходном коде, у меня есть этот код для проверки существования файла jrxml:

File file = new File("report/jrxml_file"); 
if (!file.exists()) { 
    return false; 
} 

Когда я исполняю эту банка файл с помощью команды:

java -jar MyJar.jar 

У меня ошибка, упоминающая, что конкретный jrxml_file не существует.

Мои сомнения:

  1. Я просто любопытно узнать, является ли я позволить читать jrxml_file, который найти внутри myJar.jar?
  2. Должен ли я извлечь файл jrxml_file в физический каталог, прежде чем я смогу его прочитать?

Спасибо @!

+2

Обычно вы бы не поставить .jrxml файлы в .jar. Ты можешь. В этом нет ничего принципиально неправильного. Но гораздо проще распространять их на файлы .jasper и сохранять их в файле .jar. – mdahlman

+1

Это значит, что я должен скомпилировать файлы jasper, прежде чем включать их в jar-файл? Способ, которым я разрабатываю программу, - прочитать файл jrxml, а затем скомпилировать его в файл jasper. Должен ли я выделить раздел компиляции в одну программу, а затем сначала выполнить эту программу, а затем только jar-файл jasper? Пожалуйста посоветуй. – huahsin68

+2

Да. Обычно нет необходимости делать файлы .jrxml частью вашего приложения. Поэтому вы компилируете их как часть своих шагов разработки, и вы помещаете файлы .jasper в свое приложение. – mdahlman

ответ

2

Если файл находится на верхней части кувшина на данном пути, вы можете использовать это:

InputStream is = this.getClass().getResourceAsStream("/report/jrxml_file"); 

См класса Java документы:

Оттуда вы можете прочитать его как любой другой InputStream, например, используя Apache IOUtils, как описано здесь:

+0

Моя проблема был устранен путем объединения вашего кода вместе с предложением @ mdahlam. – huahsin68

+1

Прохладный, рад, что это сработало для вас! –

Смежные вопросы