使用apache configuration2

时间:2016-06-20 23:29:31

标签: java apache-commons-config

我试图使用apache commons configuration并遇到抛出NoClassDefFoundError的问题。它发生在Parameters.xml()电话上。下面是我的IntelliJ生成的完整代码和异常详细信息。我使用的是jdk1.8.0_91。我很感激你解决这个问题的任何帮助。

import org.apache.commons.configuration2.*;
import org.apache.commons.configuration2.ex.*;
import org.apache.commons.configuration2.builder.*;
import org.apache.commons.configuration2.builder.fluent.*;

public class TestDBA {

    public static void main(String[] args)
    {
        try {
            Parameters params = new Parameters();
            FileBasedConfigurationBuilder<XMLConfiguration> builder = new FileBasedConfigurationBuilder<XMLConfiguration>(XMLConfiguration.class);
            XMLBuilderParameters px = params.xml();
            builder.configure(px.setFileName("myconfig.xml"));
            XMLConfiguration config = builder.getConfiguration();
            System.out.println(config.toString());
        } catch (ConfigurationException cex) {
            // loading of the configuration file failed
            System.out.println("some error occurred");
        }
    }
}

异常详情:

  

线程中的异常&#34; main&#34; java.lang.NoClassDefFoundError:org / apache / commons / beanutils / DynaBean       at java.lang.Class.forName0(Native Method)       at java.lang.Class.forName(Class.java:264)       at com.sun.proxy。$ Proxy0。(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)       在java.lang.reflect.Proxy.newProxyInstance(Proxy.java:739)       在org.apache.commons.configuration2.builder.fluent.Parameters.createParametersProxy(Parameters.java:294)       在org.apache.commons.configuration2.builder.fluent.Parameters.xml(Parameters.java:232)       在TestDBA.main(TestDBA.java:16)       at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)       at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)       at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)       at java.lang.reflect.Method.invoke(Method.java:498)       在com.intellij.rt.execution.application.AppMain.main(AppMain.java:144)   引起:java.lang.ClassNotFoundException:org.apache.commons.beanutils.DynaBean       at java.net.URLClassLoader.findClass(URLClassLoader.java:381)       at java.lang.ClassLoader.loadClass(ClassLoader.java:424)       at sun.misc.Launcher $ AppClassLoader.loadClass(Launcher.java:331)       at java.lang.ClassLoader.loadClass(ClassLoader.java:357)       ......还有16个

使用退出代码1完成处理

2 个答案:

答案 0 :(得分:2)

commons-configurations取决于commons-beanutils,其中定义了缺失的类(org/apache/commons/beanutils/DynaBean)。

运行时类路径中可能缺少必需的JAR。 有关构建过程的其他信息可能有助于进一步调查问题(构建路径上的内容,类路径上的内容等)。

答案 1 :(得分:0)

这就是我设法解决这个问题的方法。首先,我将commons-beanutil添加到我的pom.xml文件中:

<!-- Apache Commons Configuration -->
<dependency>
    <groupId>commons-beanutils</groupId>
    <artifactId>commons-beanutils</artifactId>
    <version>1.9.3</version> <!-- Add the latest version of BeanUtils here. -->
</dependency>

<dependency>
    <groupId>org.apache.commons</groupId>
    <artifactId>commons-configuration2</artifactId>
    <version>2.0</version> <!-- Add the latest version of Apache Commons Configuration2 here. -->
</dependency>

<!-- Add any additional dependencies here. -->

然后我将Apache BeanUtils和Apache Commons Configuration复制到我的类路径中(在我的例子中,这是lib)。

下载网址: