2015-04-26 4 views
2

Я создаю веб-приложение, используя сервлет, jsp и java-класс.Свойства Файл недоступен из Java-класса

При этом в структуре Java

project structure

Я хочу получить доступ к файлу system.properties как файл хранения конфигурации проекта.

Что я делаю получаю файл с помощью FileInputStream с помощью этого кода Java

/* generate the properties file objects */ 
Properties prop = new Properties(); 

/* generate IO to read from properties file */ 
InputStream inputStream = Thread.currentThread().getContextClassLoader().getResourceAsStream("system.properties"); 
if (inputStream != null) { 
/* load the properties file */ 
    prop.load(inputStream); 

паттинга всех переменных из файла в объект

host = prop.getProperty("host");

Но это показывает ошибку nullpointerexception как я знать, что параметр из файла свойств не загружен.

Apr 26, 2015 7:21:14 PM org.apache.catalina.core.StandardWrapperValve invoke 
SEVERE: Servlet.service() for servlet [com.domain.servlet.TotalErrorSummaryServlet] in context with path [/MonitoringDashboard] threw exception 
java.lang.NullPointerException 

Любое предложение изменить загрузчик для файла system.properties? Поскольку я помещаю файл в папку WEB-INF.

+0

Поместите 'system.properties' в' WEB-INF/classes' и добавьте '/' в ' getResourceAsStream ("/ system.properties") ' – morgano

+0

Попробуйте' InputStream inputStream = class.getClass(). getC lassLoader(). getResourceAsStream («WEB-INF/system.properties»); вместо этого ваш 'inputStream'. –

+0

Если файл свойств недоступен, вы получите исключение, если вы выполните 'prop.load()' можете ли вы зарегистрировать значение хоста после getProperty? – RaGe

ответ

1

Я просто не могу думать об одной вещи, и это, которого не ставить свои свойства файла в вашем классе пути, для проверки того, что поставить некоторые журналы внутри if заявление, как показано ниже:

if (inputStream != null) { 
    //some logs here 
    prop.load(inputStream); 
} 
else { 
    //and some logs here 
} 

вы могли видеть, что ваш входной поток равен нулю, и ничто не загружается в ваш prop, и, как я мог видеть, вы используете eclipse, поэтому используйте this answer

+0

Но его свойства log4j находятся в одном месте и, кажется, хорошо подбираются? – RaGe

+0

@RaGe У нас нет способа узнать, будет ли этот файл log4j поднят или нет. Чтобы загрузить файл в качестве ресурса, он должен находиться в пути к классу, и маловероятно, что OP изменил контейнер, поэтому он включает нестандартный каталог. Как уже было сказано, это почти наверняка ответ. –

+0

@Rage, что я нашел здесь, проект java не может загрузить файл свойств из указанной папки. Я попытался создать новую папку ресурсов, а затем получить доступ к ней, но все равно не удастся, файл свойств не может быть загружен. – randytan

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