2012-03-29 16 views
2

Für die Aktualisierung in meiner .properties Datei verwende ich Apache Commons Konfiguration PropertiesConfiguration. Aber als ich den Code verwenden als:Was läuft bei der Verwendung von PropertiesConfiguration falsch?

try { 
     PropertiesConfiguration properties = new PropertiesConfiguration("dao.properties"); 

    } catch (ConfigurationException ex) { 

    } 

Ich erhalte diese Fehlermeldung:

incompatible types 
required: java.lang.Throwable 
found: org.apache.commons.configuration.ConfigurationException 

Was falsch ist hier los? Ich verwende es zuerst zum ersten Mal.

S.S .: Gibt es eine vergleichsweise gleichwertige oder bessere Bibliothek für den Umgang mit .properties?

Antwort

4

Sie verwenden inkompatible Versionen der Bibliothek. Versuchen:

  • commons-Konfiguration-1.7
  • commons-Sammlungen-3.2.1
  • commons-lang-2.6
  • commons-logging-1.1.1

Es funktioniert für mich.

+0

Bedeutet, dass ich Collections, 'lang' und' logging' Bibliotheken zusammen mit 'configuration-1.7' beinhalten muss? – Asif

+0

@Asif ja, siehe [Laufzeitabhängigkeiten] (http://commons.apache.org/configuration/dependencies.html) –

+0

Ja, es hat funktioniert! Danke. – Asif

0

Ihr Verweis auf "dao.properties" deutet darauf hin, dass Sie Ihren Code in einer Web-Service-Umgebung bereitstellen. In diesem Fall müssen Sie sicherstellen, dass die Bibliotheken, die der Webdienst lädt, und die Bibliotheken, auf die Sie verweisen, genau gleich sind (mindestens die gleiche Version), da Unterschiede Fehler verursachen können, wie die von Ihnen geladene Klasse Der Webservice-Classloader unterscheidet sich von dem, den der Classloader Ihrer App geladen hat, daher die Ausnahme.

1

Ich hatte das gleiche Problem und dieser Post gerettet meinen Tag; Ich wollte ein bisschen mehr teilen, was ich dabei gelernt habe:

Versuchen Sie einfach, die commons-lang-Bibliothek hinzuzufügen, bevor Sie alle vier von Sergio erwähnten hinzufügen. Mein Code sieht dem Beispiel, auf das in der Frage verwiesen wird, bemerkenswert ähnlich, und ich fand, dass diese beiden Bibliotheken die erforderlichen Abhängigkeiten erfüllten.

@Haroldo - Sie sind richtig in der Bibliothek nicht übereinstimmen. Versucht Commons-lang 3.3 zuerst ohne Erfolg. Geprüft, dass commons-configuration-1.9 und commons-lang-2.6 gut zusammenspielen.

@Asif - Gibt es einen besonderen Grund, dass Sie die zusätzliche Funktionalität der Apache-Bibliothek benötigen? Ich habe festgestellt, dass die Klasse java.util.Properties für die meisten meiner Anwendungen problemlos funktioniert und keine zusätzlichen Bibliotheken erfordert. Das hängt natürlich davon ab, was Sie mit den zurückgegebenen Werten machen.