PropertiesConfiguration как ссылаться на config.properties

Я новичок в Java, так что простите меня за недостаток знаний. Я пытаюсь использовать файл свойств в своем веб-приложении. Во время исследования я нашел эту статью http://commons.apache.org/configuration/howto_properties.html, что казалось довольно простым, поэтому я попытался реализовать это. Я попытался реализовать следующим образом:

    Configuration config = new PropertiesConfiguration("stream.bundle.config"); 

Я пробовал stream.bundle.config, bundle.config и многие другие комбинации, но каждый раз получаю исключение с сообщением «Не удается найти источник конфигурации». Файл находится в папке под src под названием bundle. Мой вопрос: а) где должен быть файл? б) как я должен ссылаться на это. Прошу прощения за свою неосведомленность. Заранее спасибо.

Обновить:

я тоже пробовал

        FileInputStream in; 
    Properties p = new Properties();

    try{
        in  = new FileInputStream("config.properties");
        p.load(in);

    }
    catch(Exception e){
        System.out.println("Error: " + e);
    }

и я получаю java.io.FileNotFoundException: config.properties (система не может найти указанный файл) или java.io.FileNotFoundException: config (система не может найти указанный файл)


person sgoldberg    schedule 17.11.2011    source источник


Ответы (2)


Относительно а) где должен быть файл:

  • в текущем каталоге
  • в домашнем каталоге пользователя
  • в пути к классам

Если вы планируете использовать Свойства Java, вам необходимо получить InputStream каким-то образом. Если вы загружаете свойства из класса в пакете, вы должны использовать:

getClass().getResourceAsStream("resource.properties");

и если класс находится в другом пакете:

getClass().getResourceAsStream("some/pkg/resource.properties");

Вы можете попробовать загрузить свойства через ClassLoader:

ClassLoader.getResourceAsStream ("some/pkg/resource.properties");

Если у вас есть ServletContext, вы можете использовать:

ServletContext.getResourceAsStream(..)

РЕДАКТИРОВАТЬ: вы должны ссылаться на свой файл по полному имени (имя файла + расширение). Итак, ваша первая попытка должна была быть:

Configuration config = new PropertiesConfiguration("config.properties");
person hovanessyan    schedule 17.11.2011
comment
Как мне передать это в PropertiesConfiguration()? - person sgoldberg; 18.11.2011
comment
Я думал, что нет необходимости придерживаться apache PropertiesConfiguration. Вы можете рассмотреть возможность использования свойств Java: download.oracle.com /javase/6/docs/api/java/util/Properties.html - person hovanessyan; 18.11.2011
comment
Хорошо, просто чтобы уточнить, что мой файл находится в build/classes/stream/bundle, а файл config.properties. Чтобы получить доступ, я должен написать: getClass().getResourceAsStream(config.properties); ? Также спасибо за всю вашу помощь! - person sgoldberg; 18.11.2011
comment
вы должны ссылаться на свой файл по имени файла + расширению. Таким образом, вы можете повторно попробовать свой первоначальный подход. Я отредактировал свой ответ, чтобы посмотреть, как он должен выглядеть. - person hovanessyan; 18.11.2011
comment
это дает мне Не удается найти источник конфигурации config.properties - person sgoldberg; 18.11.2011
comment
Тогда я предлагаю вам попробовать класс свойств Java. Может быть, начать с простого проекта только с этим файлом, но с той же структурой пакета, и попытаться загрузить его и прочитать из него свойства, следуя примеру — в Интернете есть много примеров. - person hovanessyan; 18.11.2011

Попробуй это:

Properties properties = new Properties();
try 
{
    properties.load(Thread.currentThread().getContextClassLoader().getResourceAsStream("xyz.properties"));
} 
catch (IOException e) 
{
    // TODO Auto-generated catch block
    e.printStackTrace();
}
person sam    schedule 23.09.2013