Файл свойств не включается в файл jar, когда пакет Java-приложения - PullRequest
4 голосов
/ 15 января 2010

Я разработал настольное Java-приложение с использованием Netbeans. В своем приложении я использовал некоторые файлы свойств и поместил его в папку Project, чтобы я мог получить к нему доступ с помощью такого кода

 Properties props = new Properties();
 props.load(new FileInputStream("config.properties"));

Но когда я развертываю и упаковываю свое приложение в файл .jar, я не могу узнать, где находятся файлы свойств, и мое приложение не может прочитать значение из файлов свойств.

Как я могу исправить эту ошибку и где мне разместить файл свойств и загрузить его?

Ответы [ 4 ]

5 голосов
/ 15 января 2010

Поместите его под /src/resources/, затем используйте его, как показано ниже.

ResourceBundle props = ResourceBundle.getBundle("resources.config");

NetBeans не включает файлы в каталоге вашего проекта. Кроме того, вам нужно собрать проект, чтобы позволить NetBeans поместить файл properties в каталог /classes. Тогда вы сможете найти его, запустив приложение или просто определенный связанный класс Java.

Приветствие.

3 голосов
/ 29 ноября 2012

Я начал с решения мальчика Ральфи, и оно не сработало. Ну, это сработало бы, если бы я сделал то, что он сказал. Вот что я сделал, и, возможно, это добавит некоторые полезные детали.

Я всегда называл свои пакеты в честь проекта, поэтому я не знал, что в NetBeans есть буквально , пакет с именем <default package>. Когда я перетащил свой файл config.properties до уровня Source Packages, было получено низкое значение и <default package>. Он был помещен в папку src и собран в корне в файле dist .jar. После этого решение Ральфи Боя было вырезано и вставлено.

Если вы хотите, чтобы ваш пакет ресурсов или файл конфигурации был в пакете, вы должны указать путь к нему в строке baseName, например

ResourceBundle f = ResourceBundle.getBundle("pkgname/config");

или

ResourceBundle f = ResourceBundle.getBundle("com/mycompany/pkgname/config");
2 голосов
/ 23 апреля 2012

В вашем проекте Java, в пакете по умолчанию (т.е. ... / src /), поместите этот файл: messages.properties

В вашем коде поместите это:

ResourceBundle f = ResourceBundle.getBundle("messages");

У этого подхода есть очаровательный аспект: он действительно работает!

(Кто-то отредактировал и цивилизовал мой оригинальный пост, в котором было много SCREAM.голосов, которых я давно не видел на этом сайте.)

2 голосов
/ 16 января 2010

Чтобы включить файл свойств, который существует в classpath (то есть, если он находится где-то в вашем каталоге / src при создании файла jar), вы можете использовать getResourceAsStream () следующим образом:

Properties properties = new Properties();
properties.load(this.getClass().getResourceAsStream("/config.properties"));

Обратите внимание на косую черту в имени файла. Вы также можете использовать это для доступа к файлам в разных пакетах вашего проекта.

properties.load(this.getClass().getResourceAsStream("/com/company/project/config.properties"));
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...