2010-12-28 6 views
19

Мне нужно упаковать файл конфигурации в банке. файл конфигурации находится под корнем файла jar. Однако я получил следующее сообщение об ошибке:загрузить файл в банке

Caused by: java.lang.IllegalArgumentException: URI is not hierarchical at java.io.File.(Unknown Source)

File url = new File(MyClass.class.getClassLoader().getResource("my.conf").toURI()); 

ответ

28

Вместо этого вы должны использовать getResourceAsStream(). Если файл встроен в ваш JAR, URI, скорее всего, связывает: // URI

InputStream is = this.getClass().getResourceAsStream("my.conf"); 
4

Файл должен быть в том же пакете, что MyClass. Я просто понял, что вы создаете объект File. Вместо этого попробуйте использовать getResourceAsStream(). Это правильный путь, если вы хотите прочитать содержимое из ресурса pathpath. Здесь is the example.

+0

коррекции: файл был найден, но поскольку он находится внутри банки, я получил uri не иерархическую ошибку – user217631

+0

Опубликовать трассировку стека –

+0

Следующая ошибка должна быть показана «Исключение в потоке» main «java.lang.IllegalArgumentException: URI не является иерархическим» – hiropon

7

Зачем нужен файл? Если вам нужно прочитать конфиг использовать

Class.getResourceAsStream("/" + "my.conf"); 

Это нужно только файл находится в одной папке с корнем вашего пакета (то же самое, как и в корне баночке)

+1

почему вы конкатенируете там строку? – pstanton

+2

действительно неважно, хотел написать «/» + имя_файла, но изменил переменную на настоящее имя. –

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