[JAVA] Excel 읽을 때, ClassNotFoundException: org.apache.xmlbeans.XmlObject

    자바에서 Excel을 읽기 위해서, Apache POI 라이브러리를 사용하여 엑셀파일을 읽는 도중, ClassNotFound 에러가 발생하였다. 엑셀파일을 DB에 넣는 클래스를 만드는 도중이었는데 에러 메세지는 아래와 같다



    BEGIN: load PI-Exln excel file to DB

    BEGIN: initialize

    END: initialize

    BEGIN: read excel

    Exception in thread "main" java.lang.NoClassDefFoundError: org/apache/xmlbeans/XmlObject

    at com.saramin.sai.service.PIExlnLoad.readData(PIExlnLoad.java:115)

    at com.saramin.sai.service.PIExlnLoad.execute(PIExlnLoad.java:95)

    at com.saramin.sai.loader.SaiMain.main(SaiMain.java:22)

    Caused by: java.lang.ClassNotFoundException: org.apache.xmlbeans.XmlObject

    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)

    ... 3 more


    별도의 자바 프로젝트로 메이븐을 사용하지 않았으며, 기존에 maven repository에 있는 poi 라이브러리 중, 3개를 모두 등록하였는데 등록한 라이브러리는 아래와 같다.


    poi-3.15.jar

    poi-ooxml-3.15.jar

    poi-ooxml-schemas-3.15.jar


    이렇게 라이브러리로 등록하였는데 구글링 해보니 추가로 등록을 해야 되는 것 같았다. 


    stackoverflow

    You have to include one more jar.

    xmlbeans-2.3.0.jar

    Add this and try.

    Note: It is required for the files with .xlsx formats only, not for just .xls formats.


    위와 같은 말이 나와서 xmlbeans 파일을 등록하였고, 다시 실행을 하였지만 이번에는 다른 에러가 발생하였다


    Exception in thread "main" java.lang.NoClassDefFoundError: org/apache/commons/collections4/ListValuedMap

    at com.saramin.sai.service.PIExlnLoad.readData(PIExlnLoad.java:113)

    at com.saramin.sai.service.PIExlnLoad.execute(PIExlnLoad.java:93)

    at com.saramin.sai.loader.SaiMain.main(SaiMain.java:22)

    Caused by: java.lang.ClassNotFoundException: org.apache.commons.collections4.ListValuedMap

    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)

    ... 3 more


    다른 댓글을 보니 아래와 같이, xmlbeans 하나가 아니라 dom4j를 추가해야 된다는 댓글이 달려 있었음


    stackoverflow

    you have to include two more jar files.

    xmlbeans-2.3.0.jar and dom4j-1.6.1.jar Add try it will work.

    Note: It is required for the files with .xlsx formats only, not for just .xlt formats.


    그러나, 에러 메세지를 보면 apache commons-collections4 라이브러리 문제로 보여서, 위 말을 무시하고, "commons-collections4-4.1.jar" 라이브러리를 추가하였다


    해당 라이브러리를 추가하니 정상적으로 엑셀을 읽는 것이 확인되었다.

    결국 추가한 라이브러리는 아래와 같다


    commons-collections4-4.1.jar

    poi-3.15.jar

    poi-ooxml-3.15.jar

    poi-ooxml-schemas-3.15.jar

    xmlbeans-2.6.0.jar


    반응형

    댓글

    Designed by JB FACTORY