Подтвердить что ты не робот

Правильное использование конфигурации Apache Commons

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

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 имеет две проблемы с этим кодом:

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

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

4b9b3361

Ответ 1

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

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

Ответ 2

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

Если вас попросят использовать более старые библиотеки Lang компилятором, убедитесь, что вы делаете свой файл свойств Apache НОВЫМ способом, а не старым способом (который использует старые библиотеки языков). 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