配置与PropertiesConfiguration

时间:2017-04-05 17:27:07

标签: java apache-config

我对Apache Commons Configuration中的Configuration和PropertiesConfiguration类型有一些概念上的困难。

PropertiesConfiguration config = createConfig();
BlazeGraphEmbedded graph = BlazeGraphEmbedded.open(repo, config);

createConfig()方法:

public static PropertiesConfiguration createConfig()
    {
        PropertiesConfiguration config = null;
        Parameters params = new Parameters();
        BasicConfigurationBuilder<PropertiesConfiguration> builder =
        new BasicConfigurationBuilder<PropertiesConfiguration>(PropertiesConfiguration.class)
                        .configure(params.basic()
                        .setListDelimiterHandler(new DefaultListDelimiterHandler(','))
                        .setThrowExceptionOnMissing(true));
        try {
            config = builder.getConfiguration();
            config.addProperty("VALUE_FACTORY", BVF_extendo4000.INSTANCE);
        } catch (ConfigurationException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
    System.out.println("Returning config.");
    return config;
    }

我正在尝试创建一个Configuration对象以传递给BlazeGraphEmbedded类中的open方法。但是,我的createConfig方法返回一个PropertiesConfiguration对象,BlazeGraphEmbedded.open(Repository,Configuration)方法不接受该对象。我无法将我的PropertiesConfiguration转换为Configuration,它产生了一个运行时错误:

Exception in thread "main" java.lang.ClassCastException: 
org.apache.commons.configuration2.PropertiesConfiguration cannot be cast to 
org.apache.commons.configuration.Configuration

我知道Configuration是一个由PropertiesConfiguration实现的接口,但我对如何使用这两种不同类型来运行程序的细节很模糊。

1 个答案:

答案 0 :(得分:0)

问题出在我的导入声明中。我有:

import org.apache.commons.configuration.Configuration;
import org.apache.commons.configuration2.PropertiesConfiguration;

所以我从两个不同的来源导入,因此类型不兼容的原因。