2010-12-11 3 views
0

В моем проекте я загрузить свой ресурс, используяJava FileNotFoundException при запуске банки файла

getClass().getResource("/package/my_reource.file").getFile() 

Все работает хорошо, когда я запускаю проект в NetBeans, но если я запускаю опарник, я получаю FileNotFoundException, почему?

Спасибо.

ответ

1

Я не думаю, что вам нужно имя файла. Вам скорее нужен его контент. Поэтому используйте getResourceAsStream(), чтобы получить InputStream и прочитать содержание оттуда.

+0

getFile() возвращает имя файла как строку, а не файл. ;) –

+0

Спасибо, Питер, чтобы напомнить мне :). Обновлено. – Bozho

+0

Я знаю это, я пробовал с getResourceAsStrem, а strem - null. В любом случае, я должен заполнить файл отчета jasper, поэтому достаточно указать путь к строке. JasperFillManager.fillReport – blow

0

Проверьте свою банку. Я считаю, что вашего файла нет. Причины зависят от того, как вы создаете свою банку. Если вы делаете это с помощью netbeans, проверьте свои настройки. Вероятно, он включает только файлы * .class? То же самое касается муравьев. Проверить тег.

+0

Спасибо, но файл находится в банке! – blow

0

GetFile() возвращает часть пути к файлу URL-адреса, возвращаемого getResource() Итак, если это в Jar, вы должны прочитать банку, чтобы получить файл. Если его в файловой системе можно читать с помощью FileInputStream.

Если вы хотите, чтобы получить InputStream и вы не создаете, где вы получите его от использования getResourceAsStream()

2

Вы можете использовать InputStream вместо getClass().getResource("/package/my_reource.file").getFile()

Вы должны использовать

getClass.getResourceAsStream("/package/myresource.file") 
Смежные вопросы