2017-04-05 4 views
0

Ich habe einige konzeptionelle Schwierigkeiten mit den Typen Konfiguration und PropertiesConfiguration von Apache Commons Konfiguration.Konfiguration vs. Eigenschaften Konfiguration

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

createConfig() -Methode:

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; 
    } 

Ich versuche, ein Configuration-Objekt zu erstellen, um die offene Methode in der Klasse BlazeGraphEmbedded passieren. Meine createConfig-Methode gibt jedoch ein PropertiesConfiguration-Objekt zurück, das die Methode BlazeGraphEmbedded.open (Repository, Configuration) nicht akzeptiert. Ich war nicht in der Lage, meine PropertiesConfiguration zu Konfiguration zu werfen, es erzeugt einen Laufzeitfehler:

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

Ich verstehe, dass Konfiguration ist eine Schnittstelle, die von PropertiesConfiguration implementiert ist, aber ich bin fuzzy auf die Details, wie ich verwenden kann, die zwei verschiedenen Arten, um mein Programm laufen zu lassen.

Antwort

0

Das Problem war in meinen Importaussagen. Ich hatte:

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

So importierte ich aus zwei verschiedenen Quellen, weshalb die Typen nicht kompatibel waren.