Как получить доступ к файлу свойств из веб-приложения Java EE? - PullRequest
14 голосов
/ 02 марта 2010

Я создал динамический веб-проект в Eclipse. Я создал файл свойств в каталоге src:

<project-root>/src/props.properties

Я запускаю Tomcat через Eclipse в режиме отладки. Теперь я хочу прочитать файл свойств из одного из моих POJO, но получаю исключение FileNotFoundException. Текущий путь, похоже, путь Eclipse.

Я заглянул в интернет для решения, но ни один из них не помог мне. Может я что то не так сделал. Код такой:

File file = new File("props.properties");
FileReader reader = new FileReader(file);
properties.load(reader);

Как мне получить доступ к файлу свойств? Где он должен быть расположен?

Заранее спасибо.

Ответы [ 6 ]

23 голосов
/ 02 марта 2010

Если это веб-приложение, свойства будут развернуты в WEB-INF / classes и могут быть загружены с помощью загрузчика классов

InputStream in = {NameOfClassWhereThisisInvoked}.class.getResourceAsStream("/props.properties");
properties.load(in);
in.close();

На самом деле это должно работать независимо от того, является ли это веб-приложением или нет.

Я предполагаю, что src определен как исходная папка

3 голосов
/ 08 июля 2011

Есть еще один способ сделать это следующим образом:

File file = new File(session.getServletContext().getRealPath("/") + "props.properties");

Вместо «props.properties» вы можете указать любой путь относительно папки «WebContent» вашего проекта веб-приложения eclipse.

2 голосов
/ 15 сентября 2012

вот правильный способ загрузки файла свойств из любой точки пути к классам

private Properties getPropertiesFromClasspath(String propFileName)
                                                                throws IOException
{
    Properties props = new Properties();
    InputStream inputStream =
    this.getClass().getClassLoader().getResourceAsStream(propFileName);

    if (inputStream == null)
    {
        throw new FileNotFoundException("property file '" + propFileName
      + "' not found in the classpath");
}

props.load(inputStream);
return props;
}

Вы можете создать одноэлементный класс для загрузки свойств в память при первом обращении, а затем использовать их статическим методом. Полный пример этого доступен на http://bharatonjava.wordpress.com/2012/09/12/using-properties-file-in-java-application/

0 голосов
/ 21 июня 2013

Сохраните файл свойств в папке src, и для чтения файла свойств достаточно следующего кода

  **File file = new File("./src/config.properties");
  FileReader reader = new FileReader(file);
  prop.load(reader);
  System.out.println(prop.getProperty("directorypath"));**
0 голосов
/ 02 марта 2010

Ваш проект настроен на автоматическую сборку? Если это так (или вы создаете вручную), проверьте, отображается ли props.properties в папке output вашего проекта (в Eclipse это обычно "bin", но может быть WebRoot или что-то еще, в зависимости от того, как ваш проект настроен).

Когда проект собирается, он должен копировать конфигурационные файлы, а также ваши скомпилированные классы, JSP и т. Д. Однако я считаю, что программы чтения файлов по умолчанию используют домашний каталог JVM для своего источника. В случае Eclipse это означает, что ваш файл props.properties должен находиться в проекте root , то есть не в папке "src".

0 голосов
/ 02 марта 2010

Отметьте этот вопрос . Вы должны сделать "src / props.properties"

...