Tôi đang cố gắng kiểm tra a very simple example được đưa ra trong hướng dẫn sử dụng thư viện cấu hình Apache-commons về khai báo và tạo bean. Tôi đã sao chép mã trong ví dụ gần như từng từ, và tôi nhận được một ngoại lệ NoClassDefFoundError.Ví dụ cấu hình Apache-commons rất đơn giản ném NoClassDefFoundError
Dưới đây là file xml Tôi đang sử dụng - 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>
Đây là mã trong file WindowManager.java
:
package test;
public interface WindowManager {}
Dưới đây là đoạn code trong file DefaultWindowManager.java
:
package test;
public class DefaultWindowManager implements WindowManager {
private boolean resizable;
private boolean closable;
private int defaultWidth;
private int defaultHeight;
}
Đây là mã trong tệp 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);
}
}
Dưới đây là kết quả trong thời gian chạy:
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
Làm thế nào để làm cho công việc ví dụ đơn giản này?
Tôi đang sử dụng phiên bản 1.9 của gói cấu hình commons, được nhập tự động bởi IntelliJ IDEA sau khi đặt phụ thuộc vào tệp pom.xml
và phiên bản 1.7.0_17 của java đang chạy trên Windows 8 64bit.
Cảm ơn, tôi thêm vào việc nhập khẩu và bây giờ tôi nhận được một lỗi khác nhau (xem cập nhật) - bất kỳ ý tưởng? – Joe
Bạn hoàn toàn đúng, xin lỗi về điều đó. Tôi đã đăng một câu hỏi mới ở đây: http://stackoverflow.com/q/16266523/566639 – Joe