2015-06-01 2 views
-1

Ниже приведенный код возвращает нулевой когда я загрузку файла свойства. Пожалуйста, пройдите код и предложите мне изменения.ClassLoader.class.getResourceAsStream не работает в моем коде

constantProp = new Properties(); 

    try { 

     // Loads the constants.properties file 
     InputStream constantPropFile = ClassLoader.class 
       .getResourceAsStream("/ConstantFiles/" 
         + ".properties"); 
     System.out.println(constantPropFile); 
     constantProp.load(constantPropFile); 
    } catch (FileNotFoundException e) { 
     // TODO Auto-generated catch block 
     // e.printStackTrace(); 
     log.equals("Constant Property file not found"); 

    } catch (IOException e) { 
     // TODO Auto-generated catch block 
     // e.printStackTrace(); 
     log.error("Can't Load constants.properties property 
    file "); 
    } 
+0

Что такое ''/ConstantFiles/"+" .properties "'? – Maroun

+0

Каково точное местоположение 'ConstantFiles.properties' и вашего класса? – afzalex

+0

ConstantFiles - это имя папки –

ответ

0

Если вы используете метод getResourceAsStream, то он описывает:

Порядок поиска описан в документации {@link getResource (String)}.

Входной поток для чтения ресурса, или нулевое значение, если ресурс не может быть найден

И убедитесь, что ссылка работает должным образом.

Так что если вы пытаетесь загрузить файл свойств с локального компьютера или от пути, который вы уже знаете, то вы можете использовать следующий код для загрузки файлов свойств:

Properties prop = new Properties(); 
prop.load(new FileInputStream("/ConstantFiles/.properties")); 
0

кажется, что вы отсутствует имя файла. Ваш комментарий в коде говорит «Загружает файл констант.properties», но ваш код пытается загрузить файл под названием «.properties», расположенный в папке «/ ConstantFiles /». Таким образом, кажется, что ваша проблема может заключаться в том, что вам не хватает имени файла.

На всякий случай, если вы этого не знаете, «getResourceAsStream» попытается найти файл в вашем пути к классам. Убедитесь, что папка «ConstantFiles» находится в вашем пути к классу (http://docs.oracle.com/javase/7/docs/api/java/lang/Class.html#getResourceAsStream(java.lang.String))

+0

Как проверить путь к классам? Если «/ ConstantFiles» отсутствует в classpath, что мне нужно использовать? –

+0

Хотя вы определяете имя файла свойств как 'some.properties', вы получите ту же ошибку. –

+0

@PS. Если «/ ConstantFiles» не находится в classpath, вы можете просто загрузить файл с помощью «FileInputStream». Например: 'InputStream constantPropFile = new FileInputStream ("/etc/your_app/ConstantFiles/constants.properties ")' – mrt

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