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

Я создал динамический веб-проект в 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);

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

Спасибо заранее.

Ответы

Ответ 1

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

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

Фактически это должно работать независимо от того, является ли это webapp или нет.

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

Ответ 2

Существует другой способ сделать это следующим образом:

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

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

Ответ 3

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

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/

Ответ 4

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

Ответ 5

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

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

Ответ 6

Файл свойств Kepp ur в папке src, и для чтения файла свойств достаточно следующего кода

  **File file = new File("./src/config.properties");
  FileReader reader = new FileReader(file);
  prop.load(reader);
  System.out.println(prop.getProperty("directorypath"));**