Как получить доступ к файлам свойств из веб-приложения 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"));**