Правильное использование конфигурации 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?, но предоставленное там решение не поможет.
Ответы
Ответ 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