Каков путь к файлам ресурсов в проекте Maven? - PullRequest
35 голосов
/ 23 июня 2010

В моем проекте Maven у меня есть следующий код в основном методе:

FileInputStream in = new FileInputStream("database.properties");

но всегда получаю ошибку "файл не найден".

Я поместил файл в src / main / resources, и он правильно скопирован в каталог target / classes (я полагаю, что это ожидаемое поведение для ресурсов Maven), но при реальном запуске программы кажется, что он никогда не сможет найти файл. Я пробовал разные другие пути:

FileInputStream in = new FileInputStream("./database.properties");
FileInputStream in = new FileInputStream("resources/database.properties");

и т.д.. но ничего не работает.

Так какой же правильный путь использовать?


Основываясь на ответе "disown" ниже, вот что мне было нужно:

InputStream in = TestDB.class.getResourceAsStream("/database.properties")

где TestDB - имя класса.

Спасибо за помощь, отрекайся!

1 Ответ

56 голосов
/ 23 июня 2010

Вы не можете напрямую загрузить файл, вам нужно использовать абстракцию ресурса (ресурс может находиться не только в файловой системе, но и в любом месте пути к классу - в файле JAR или иным образом).Эта абстракция - то, что вам нужно использовать при загрузке ресурсов.Пути к ресурсам зависят от местоположения вашего файла класса, поэтому вам нужно добавить косую черту, чтобы попасть в «корень»:

InputStream in = getClass().getResourceAsStream("/database.properties");
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...