2017-03-24 2 views
0

Apache 통합 문서 모듈을 엑셀 파일에 액세스하려고합니다. 코드는 때로는 완벽하게 실행되지만 대개 다음과 같은 오류 메시지가 표시됩니다.java.lang.ClassNotFoundException : org.apache.poi.ss.usermodel.Workbook

exception

javax.servlet.ServletException: Servlet execution threw an exception org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52)

root cause

java.lang.NoClassDefFoundError: org/apache/poi/ss/usermodel/Workbook

root cause

java.lang.ClassNotFoundException: org.apache.poi.ss.usermodel.Workbook

나는 이것을 찾아서 jar 파일 문제라고 읽습니다. 내 편에서 문제를 해결하려고했지만 여전히 같은 오류가 발생합니다.

<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
    xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd"> 
    <modelVersion>4.0.0</modelVersion> 
    <groupId>XYZ</groupId> 
    <artifactId>ABC</artifactId> 
    <packaging>war</packaging> 
    <version>0.0.1-SNAPSHOT</version> 
    <name>ScriptsGenerator Maven Webapp</name> 
    <url>http://maven.apache.org</url> 
    <dependencies> 
     <dependency> 
     <groupId>junit</groupId> 
     <artifactId>junit</artifactId> 
     <version>3.8.1</version> 
     <scope>test</scope> 
     </dependency> 
     <!-- https://mvnrepository.com/artifact/org.apache.poi/poi --> 
     <dependency> 
     <groupId>org.apache.poi</groupId> 
     <artifactId>poi</artifactId> 
     <version>3.15</version> 
     </dependency> 
    <dependency> 
     <groupId>org.lucee</groupId> 
     <artifactId>poi-ooxml-schemas</artifactId> 
     <version>3.15.0</version> 
    </dependency> 
    <!-- https://mvnrepository.com/artifact/org.apache.poi/poi-ooxml --> 
    <dependency> 
     <groupId>org.apache.poi</groupId> 
     <artifactId>poi-ooxml</artifactId> 
      <version>3.15</version> 
    </dependency> 

    <!-- https://mvnrepository.com/artifact/javax.servlet/javax.servlet-api --> 
    <dependency> 
      <groupId>javax.servlet</groupId> 
     <artifactId>javax.servlet-api</artifactId> 
     <version>3.1.0</version> 
    </dependency> 
    <!-- https://mvnrepository.com/artifact/com.googlecode.json-simple/json-simple --> 
    <dependency> 
     <groupId>com.googlecode.json-simple</groupId> 
     <artifactId>json-simple</artifactId> 
     <version>1.1.1</version> 
    </dependency> 
    <dependency> 
     <groupId>commons-logging</groupId> 
     <artifactId>commons-logging</artifactId> 
     <version>1.2</version> 
    </dependency> 
    <dependency> 
      <groupId>commons-codec</groupId> 
      <artifactId>commons-codec</artifactId> 
      <version>1.10</version> 
    </dependency> 
    <dependency> 
     <groupId>log4j</groupId> 
     <artifactId>log4j</artifactId> 
     <version>1.2.17</version> 
    </dependency> 
    <dependency> 
     <groupId>org.apache.struts</groupId> 
     <artifactId>struts2-core</artifactId> 
     <version>2.5.8</version> 
     </dependency> 
     <!-- https://mvnrepository.com/artifact/org.apache.xmlbeans/xmlbeans --> 
    <dependency> 
     <groupId>org.apache.xmlbeans</groupId> 
     <artifactId>xmlbeans</artifactId> 
     <version>2.6.0</version> 
    </dependency> 
    <!-- https://mvnrepository.com/artifact/dom4j/dom4j --> 
    <dependency> 
      <groupId>dom4j</groupId> 
      <artifactId>dom4j</artifactId> 
      <version>1.6.1</version> 
    </dependency> 
    <!-- https://mvnrepository.com/artifact/org.apache.commons/commons-collections4 --> 
    <dependency> 
     <groupId>org.apache.commons</groupId> 
     <artifactId>commons-collections4</artifactId> 
     <version>4.1</version> 
    </dependency> 
    <dependency> 
    <groupId>commons-fileupload</groupId> 
    <artifactId>commons-fileupload</artifactId> 
    <version>1.2</version> 
    </dependency> 

    </dependencies> 
    <build> 
     <finalName>AAAA</finalName> 
    </build> 
    </project> 

어디 잘못 갈거야 : 여기

내이 pom.xml입니까?

답변

0

아파치 POI 단지 다운로드있어 여부를 확인하시기 바랍니다,

또한 {User_Directory}의 내용을 삭제, 프로젝트를 청소 POI-OOXML-스키마

<!-- https://mvnrepository.com/artifact/org.apache.poi/poi-ooxml-schemas --> 
<dependency> 
    <groupId>org.apache.poi</groupId> 
    <artifactId>poi-ooxml-schemas</artifactId> 
    <version>3.15</version> 
</dependency> 
+0

나는 Properties> Java Build Path> Libraries로 갔다. Maven Dependencies 아래에 항아리가 있습니다. –

0

을 위해 아래의 실행 종속를 사용해보십시오 /. m2 폴더 및 다시 실행 프로젝트 당신은 아마 컨테이너가 jar 파일의 고유 한 세트를 가지고 있다는 것을 의미 서블릿 컨테이너에서이를 실행하는 것 같습니다

Under windows system you can find maven repo path as C:\Users\{user_name}\.m2

Under linux system you can find maven repo path as /home/{user_name}/.m2

+0

.m2 폴더가 표시되지 않습니다. 그걸로 나를 도울 수 있니? –

+0

답변을 업데이트했습니다. –

+0

강제로 설정을 변경하지 않았다면, .m2 폴더는 사용자/home 디렉토리에 있어야합니다. –

0

에스. 예를 들어 Tomcat의 경우 Tomcat/lib 디렉토리에 있습니다. 서블릿 컨테이너가 현재 사용하고있는 것과 호환되지 않는지 확인하려면 서블릿 컨테이너가 사용중인 jar를 확인하십시오.

당신이 원하는 것은 당신이 필요로하는 수업이없는 poi의 오래된 버전입니다. 이러한 jar 파일이 존재하고 올바른 jar 파일 앞에로드되면 웹 응용 프로그램 자체에 올바른 버전이 있어도 문제가 발생할 수 있습니다.

+0

항아리가 호환되는지 확인하는 방법을 모르겠습니다. 정교하게 주시겠습니까? –