deklariert Ich versuche, einfache Verwendung von einfachen Apache Commons Configuration2 laden Konfiguration aus einer Eigenschaftendatei. Hier ist meine Abhängigkeit:Abhängigkeit für Apache Commons Configuration2 als optional
<dependency>
<groupId>org.apache.commons</groupId>
<artifactId>commons-configuration2</artifactId>
<version>2.1</version>
</dependency>
Ich versuche, meine Web-Anwendung zu starten und diese:
java.lang.ClassNotFoundException: org.apache.commons.beanutils.DynaBean
at org.apache.catalina.loader.WebappClassLoaderBase.loadClass(WebappClassLoaderBase.java:1285)
at org.apache.catalina.loader.WebappClassLoaderBase.loadClass(WebappClassLoaderBase.java:1119)
at java.lang.Class.forName0(Native Method)
at java.lang.Class.forName(Class.java:264)
at com.sun.proxy.$Proxy21.<clinit>(Unknown Source)
at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62)
at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
at java.lang.reflect.Constructor.newInstance(Constructor.java:423)
at java.lang.reflect.Proxy.newProxyInstance(Proxy.java:739)
at org.apache.commons.configuration2.builder.fluent.Parameters.createParametersProxy(Parameters.java:294)
at org.apache.commons.configuration2.builder.fluent.Parameters.properties(Parameters.java:245)
Schöne. Seit wann können wir nicht Maven verwenden, um Abhängigkeiten automatisch zu bekommen? Ich schaue auf die commons-configuration2 POM on Maven Central und sehen, dass Commons-Beanutil als optional deklariert ist.
Warum wird es als "optional" erklärt, wenn ich es offensichtlich brauche?
Aber die [Dokumentation sagen] (https://commons.apache.org/proper/commons-configuration/userguide/howto_builders.html#Configuration_Builders), dass "Der empfohlene Weg ist die Verwendung einer _Configuration Builder_"? (Betonung im Original.) Also im Grunde sagen Sie, dass diese Abhängigkeit optional ist - es sei denn, ich benutze die Bibliothek in der empfohlenen Weise? Siehst du da nicht einen Konflikt? –
Es wäre sicherlich klarer und einfacher, wenn die Dokumentation zumindest neben dieser Empfehlung erwähnt, dass dies die optionale Abhängigkeit hinzufügt. Um die optionale maven-Abhängigkeit nutzen zu können, wollte das Apache Commons-Team vermeiden, unnötige Abhängigkeiten für Projekte aufzuladen, die versuchen, die verwendeten Abhängigkeiten zu minimieren. – Gorkk
Eine optionale Abhängigkeit, die nur zum Erstellen von Parametern erforderlich ist (z. B. eine Datei angeben, von der config geladen werden soll), ein Muster, das in allen Beispielen verwendet wird, und das zu obskuren ClassNotFound-Ausnahmen führt, wenn Sie es nicht explizit hinzufügen zu tun, bis sie die Ausnahme treffen und Google? Das ist eine * schreckliche * API. –