2013-04-28 11 views
6

Próbuję przetestować a very simple example podany w podręczniku użytkownika biblioteki Apache-commons dotyczącym deklarowania i tworzenia komponentów bean. Skopiowałem kod w przykładzie prawie słowo po słowie, a mimo to otrzymuję wyjątek NoClassDefFoundError.Bardzo prosty przykład konfiguracji Apache-commons wyrzuca NoClassDefFoundError

Tutaj jest plik xml używam - 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> 

Oto kod w pliku WindowManager.java:

package test; 
public interface WindowManager {} 

Oto kod w pliku DefaultWindowManager.java:

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

Oto kod w pliku 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); 
    } 
} 

Oto wynik podczas wykonywania:

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 

Jak zrobić ten prosty przykład pracę?

używam wersji 1.9 pakietu commons-konfiguracji, auto przywiezione przez IntelliJ IDEA po włożeniu zależność w pliku pom.xml i wersja 1.7.0_17 Java w systemie Windows 8 64bit.

Odpowiedz

1

Importuj org.apache.commons.beanutils.PropertyUtils w swojej klasie.

+0

Dzięki, dodałem import i teraz dostaję inny błąd (patrz Aktualizacja) - jakieś pomysły? – Joe

+1

Masz absolutną rację, przepraszam za to. Zadałem nowe pytanie tutaj: http://stackoverflow.com/q/16266523/566639 – Joe

16

miałem ten sam problem, Dodałem tę zależność:

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

Oczywiście jest to właściwa odpowiedź. Zależności dynamiczne są podane tutaj: https://commons.apache.org/proper/commons-configuration/dependencies.html – cquezel

+0

Uwaga grupa to 'commons-beanutils', a nie' org.apache.commons' jak wiele innych Apache Biblioteki Commons – jamesthollowell