자바에서 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
'Stackoverflow > Java' 카테고리의 다른 글
(x = y) == x 와 x == (x = y) 가 다른 이유 (0) | 2018.12.19 |
---|---|
[JAVA] 엑셀 읽을 때, 형변환 에러가 발생할 경우 (2) | 2018.10.05 |
mysql connector의 버전에 따른, 톰캣 오류 (0) | 2018.05.08 |
스프링(Spring)에서 글자가 깨질 경우 (0) | 2017.12.15 |
스프링(Spring)에서 Error creating bean with name 에러 발생시 (0) | 2017.12.15 |