2016-06-20 16 views
1

apache commons configuration을 사용하여 NoClassDefFoundError를 발생시키는 문제가 발생했습니다. Parameters.xml() 전화에서 발생합니다. 다음은 IntelliJ에서 생성 한 전체 코드와 예외 사항입니다. jdk1.8.0_91을 사용하고 있습니다. 이 문제를 해결하는 데 도움을 주셔서 감사합니다.apache configuration2를 사용하여 XMLConfiguration 파일을 읽는 데 문제가 발생했습니다.

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"); 
     } 
    } 
} 

예외 세부 정보 :

Exception in thread "main" 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) 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.xml(Parameters.java:232) at 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) at com.intellij.rt.execution.application.AppMain.main(AppMain.java:144) Caused by: 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 more

프로세스는 누락 된 클래스 (org/apache/commons/beanutils/DynaBean)가 정의되는 경우 1

답변

1

commons-configurationscommons-beanutils에 따라 종료 코드로 마쳤다.

필수 JAR이 런타임 클래스 경로에서 누락되었습니다. 빌드 프로세스에 대한 추가 정보는 문제를 자세히 조사하는 데 도움이됩니다 (빌드 경로, 클래스 경로 등).

+0

콩팥 병이 설치되어 경로에 있습니다. 나는 이것을 포기하고 나의 필요를 위해 javax.xml을 사용하고있다. – user3885927

0

이렇게하면이 문제를 해결할 수있었습니다. 첫째, 내 pom.xml 파일에 평민 - beanutil 추가 :

그때 내 클래스 경로에 아파치 BeanUtils와 아파치 코 몬즈 구성을 복사
<!-- 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. --> 

(내 경우에는이 lib 디렉토리했다).

다운로드하는 URL :