Правильное использование конфигурации Apache Commons - PullRequest
17 голосов
/ 04 октября 2011

Мой код следующий:

package org.minuteware.jgun;

import org.apache.commons.configuration.*;

class ConfigReader {
    public void getconfig() {
        Configuration config;
        try {
            config = new PropertiesConfiguration("gun.conf");
        } catch (ConfigurationException e) {
            e.printStackTrace();
        }
        String day = config.getString("sync_overlays");
        System.out.println(day);
    }
}

У Eclipse есть две проблемы с этим кодом:

  1. Для строки package org.minuteware.jgun; написано The type org.apache.commons.lang.exception.NestableException cannot be resolved. It is indirectly referenced from required .class files
  2. Для строки } catch (ConfigurationException e) { написано No exception of type ConfigurationException can be thrown; an exception type must be a subclass of Throwable

Я обнаружил ConfigurationException в Java? , но приведенное там решение не помогает.

Ответы [ 2 ]

38 голосов
/ 04 октября 2011

Ядро Конфигурация Apache Commons имеет следующие зависимости времени выполнения :

Поместите их и в свой класс. Ваша конкретная проблема вызвана отсутствующей зависимостью Ланга.

0 голосов
/ 23 мая 2017

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

Если компилятор просит вас использовать более старые библиотеки Lang, убедитесь, что файл свойств Apache сделан НОВЫМ, а не старым способом (в котором используются более старые библиотеки Lang). https://commons.apache.org/proper/commons-configuration/userguide/howto_filebased.html это сайт Apache, с которого я получил следующий код, который выполняет базовую операцию SET для файла на моем компьютере с Windows.

import org.apache.commons.configuration2.Configuration;
import org.apache.commons.configuration2.FileBasedConfiguration;
import org.apache.commons.configuration2.PropertiesConfiguration;
import org.apache.commons.configuration2.builder.FileBasedConfigurationBuilder;
import org.apache.commons.configuration2.builder.fluent.Parameters;

public final class Settings implements Serializable {

private Configuration config;
private String propertiesFilePath;
private FileBasedConfigurationBuilder<FileBasedConfiguration> builder;

public Settings(String propertiesFilePath) {
    Parameters params = new Parameters();
    File propFile = new File(propertiesFilePath);
    builder = new FileBasedConfigurationBuilder<FileBasedConfiguration>(PropertiesConfiguration.class)
            .configure(params.fileBased()
                    .setFile(propFile));
    try {
        config = builder.getConfiguration();
    } catch (Exception e) {
        System.out.println("Exception - Settings constructor: " + e.toString());
    }
}//end constructor

public void setValue(String key, String value) throws Exception {
        config.setProperty(key, value);
        builder.save();
 }// end setter method
}//end class
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...