файл конфигурации Java - PullRequest
       27

файл конфигурации Java

0 голосов
/ 19 ноября 2009

У меня есть метод:

private String getProperty(String property) throws IOException,ConfigException {

    // first test if the config file exists.
    String propertyFile = "DataTransfer/Config/DataTransfer.properties";

    if(!new File(propertyFile).exists()) {
        throw new ConfigException("the config file doesn't exist." +
            " Make sure the file : \""+propertyFile+"\" exists.");
    }   

    // retrieve the property
    Properties configFile = new Properties();

    configFile.load(this.getClass().getClassLoader()
        .getResourceAsStream(propertyFile));

    String prop = configFile.getProperty(property);
    return prop;
}

К сожалению, я продолжаю получать java.lang.NullPointerException на уровне ConfigFile.load().

Я проверил свои переменные в режиме отладки, ни одна из них не является нулевой.

Я не знаю, в чем причина этого исключения.

Ответы [ 6 ]

5 голосов
/ 19 ноября 2009

Вы проверили, что он существует в виде файла в текущем рабочем каталоге. Вы не проверили, существует ли он на пути к классам.

Если вы знаете, что он существует как файл, почему бы не загрузить его как файл?

Если вы хотите загрузить его из пути к классам, почему бы не изменить проверку, чтобы убедиться, что он существует в пути к классам?

По сути, вы должны соблюдать согласованность между проверкой и загрузкой.

1 голос
/ 19 ноября 2009

ClassLoader # getResourceAsStream (String) возвращает null, если ресурс не может быть найден иерархией ClassLoader. Скорее всего, это будет основной причиной.

Загрузка классов, особенно в J2EE-средах, часто неправильно понимается.

0 голосов
/ 19 ноября 2009

Убедитесь, что файл конфигурации находится в этой конкретной папке и что вы на самом деле ищете правильный путь. Я обычно добавляю что-то подобное перед загрузкой:

System.out.println(this.getClass().getClassLoader().getResource(".").getFile());

Это напечатает абсолютный путь

0 голосов
/ 19 ноября 2009

Используйте

configFile.load(new FileReader(new File(propertyFile)));

проверить и загрузить в том же стиле

0 голосов
/ 19 ноября 2009

Вы можете попробовать вот так FileInputStream infile = new FileInputStream (новый файл (libjavaFolder + "log4j.properties")); if (infile! = null) { Свойства logProps = новые свойства (); logProps.load (входной_файл); infile.close (); }

0 голосов
/ 19 ноября 2009

Я отсылаю вас к этому вопросу , касающемуся лучших методов чтения файлов конфигурации в средах J2EE.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...