2016-10-20 2 views
2

У меня есть весь мой код программирования, упакованный в файл jar. Этот Jar-файл я буду размещать в своем динамическом веб-проекте для выполнения логики в банке.файл свойств в веб-проекте

Но файл jar имеет некоторую логику, которая читает файл .properties, чтобы получить некоторые значения конфигурации.

Когда я запустить свой интернет-проект для логики я получаю ошибку java.io.FileNotFoundException: conf\conf.properties (The system cannot find the path specified)

 
WebContent 
|__WEB-INF 
|___conf 
|____conf.properties 
|___lib 
|_____myJar.jar 
|__classes 

У меня следующий код для чтения файла свойств.

String propFileName = "conf/conf.properties"; 
Properties prop = new Properties(); 
prop.load(getClass().getResourceAsStream(propFileName)); 

Любые предложения по решению этой проблемы plz.

Я также попытался с

String propFileName = "conf/conf.properties"; 
File file = new File(propFileName); 
Properties prop = new Properties(); 
FileInputStream fileInput = new FileInputStream(file); 
prop.load(fileInput); 

ответ

2

Вашего подходом, основанного на Class#getResourceAsStream(name) будет работать только тогда и только тогда, когда файл доступен из ClassLoader вашего класса вызывающего и вот, что у вас есть непосредственно под WEB-INF не доступен , вы должны переместить conf/conf.properties в WEB-INF/classes и использовать /conf/conf.properties в качестве имени ресурса, чтобы он мог получить файл из корня не из пакета вашего вызывающего класса.

+0

я пропустил упомянуть еще одну вещь тогда. У моей банки есть реализация фильтра. И в своем веб-проекте я создал конфигурацию, которая будет вызывать этот фильтр на основе шаблона URL. Поэтому в моем проекте я не вижу никаких «WEB-INF/classes» – Geek

+0

, пожалуйста, проясните это в своем первоначальном вопросе. Я не понимаю, почему вы не можете видеть 'WEB-INF/classes', поскольку он доступен из webapp' ClassLoader', который содержит файлы 'jar' в 'WEB-INF/lib' и каталог' WEB-INF/classes' –

+0

Простите меня. Сначала я неправильно понял ваши комментарии. И теперь это сработало .. Спасибо :) – Geek

0

Чтобы прочитать файл свойств веб-инф папку сервлета проекта сделать followoing

ServletContext.getResourceAsStream("WEB-INF/conf/conf.properties") 
+0

Я читаю файл свойств в классе, который находится внутри' myJar.jar' – Geek

Смежные вопросы