2013-04-28 46 views
6

我试图测试a very simple example在Apache-commons配置库用户指南中提供的有关声明和创建bean的信息。我几乎一个字地复制了代码,但是我得到了一个N​​oClassDefFoundError异常。非常简单的Apache-commons配置示例抛出NoClassDefFoundError

这里是我使用的XML文件 - windowcongif.xml

<?xml version="1.0" encoding="ISO-8859-1" ?> 
<config> 
    <gui> 
    <windowManager config-class="test.DefaultWindowManager" 
     closable="false" resizable="true" defaultWidth="400" 
     defaultHeight="250">  
    </windowManager> 
    </gui> 
</config> 

这里是文件WindowManager.java代码:

package test; 
public interface WindowManager {} 

这里是文件DefaultWindowManager.java代码:

package test; 
public class DefaultWindowManager implements WindowManager { 
    private boolean resizable; 
    private boolean closable; 
    private int defaultWidth; 
    private int defaultHeight; 
} 

这是文件中的代码Main.java

package test; 
import org.apache.commons.configuration.ConfigurationException; 
import org.apache.commons.configuration.XMLConfiguration; 
import org.apache.commons.configuration.beanutils.BeanDeclaration; 
import org.apache.commons.configuration.beanutils.BeanHelper; 
import org.apache.commons.configuration.beanutils.XMLBeanDeclaration; 

public class Main { 
    public static void main(String[] args) throws ConfigurationException { 
     XMLConfiguration config = new XMLConfiguration("windowconfig.xml"); 
     BeanDeclaration decl = new XMLBeanDeclaration(config, "gui.windowManager"); 
     WindowManager wm = (WindowManager) BeanHelper.createBean(decl); 
    } 
} 

下面是运行时的输出:

Exception in thread "main" java.lang.NoClassDefFoundError: org/apache/commons/beanutils/PropertyUtils 
    at org.apache.commons.configuration.beanutils.BeanHelper.initProperty(BeanHelper.java:269) 
    at org.apache.commons.configuration.beanutils.BeanHelper.initBeanProperties(BeanHelper.java:229) 
    at org.apache.commons.configuration.beanutils.BeanHelper.initBean(BeanHelper.java:166) 
    at org.apache.commons.configuration.beanutils.DefaultBeanFactory.initBeanInstance(DefaultBeanFactory.java:108) 
    at org.apache.commons.configuration.beanutils.DefaultBeanFactory.createBean(DefaultBeanFactory.java:64) 
    at org.apache.commons.configuration.beanutils.BeanHelper.createBean(BeanHelper.java:336) 
    at org.apache.commons.configuration.beanutils.BeanHelper.createBean(BeanHelper.java:358) 
    at org.apache.commons.configuration.beanutils.BeanHelper.createBean(BeanHelper.java:372) 
    at test.Main.main(Main.java:23) 
Caused by: java.lang.ClassNotFoundException: org.apache.commons.beanutils.PropertyUtils 
    at java.net.URLClassLoader$1.run(URLClassLoader.java:366) 
    at java.net.URLClassLoader$1.run(URLClassLoader.java:355) 
    at java.security.AccessController.doPrivileged(Native Method) 
    at java.net.URLClassLoader.findClass(URLClassLoader.java:354) 
    at java.lang.ClassLoader.loadClass(ClassLoader.java:423) 
    at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:308) 
    at java.lang.ClassLoader.loadClass(ClassLoader.java:356) 
    ... 9 more 

如何使这个简单的例子工作?

我使用commons-configuration软件包的1.9版本,将依赖项放入pom.xml文件后自动导入IntelliJ IDEA,以及在Windows 8 64bit上运行的Java版本1.7.0_17。

回答

1

导入org.apache.commons.beanutils.PropertyUtils在你的课堂上。

+0

谢谢,我增加了进口,现在我得到一个不同的错误(见更新) - 任何想法? – Joe 2013-04-28 18:42:48

+1

你说的没错,对不起。我在这里发布了一个新问题:http://stackoverflow.com/q/16266523/566639 – Joe 2013-04-28 18:58:48

16

我有同样的问题,我已经添加了这种相关性:

<dependency> 
    <groupId>commons-beanutils</groupId> 
    <artifactId>commons-beanutils</artifactId> 
    <version>1.9.3</version> 
</dependency> 
+0

显然这是正确的答案。动态依赖在这里给出:https://commons.apache.org/proper/commons-configuration/dependencies.html – cquezel 2017-04-11 15:02:40

+0

请注意,该组是“commons-beanutils”,而不是像其他许多Apache一样的“org.apache.commons” Commons图书馆 – jamesthollowell 2017-08-11 15:48:52