2014-11-18 2 views
1

, когда я попытался создать книгу в обычном классе Java это создание, но когда я попытался запустить то же самое на сервлет он бросает исключенияjava.lang.ClassNotFoundException: org.apache.poi.xssf.usermodel.XSSFWorkbook

Нормальный класс Java

import java.io.File; 
import java.io.FileInputStream; 
import java.io.FileNotFoundException; 
import java.io.IOException; 

import org.apache.poi.ss.usermodel.Workbook; 
import org.apache.poi.xssf.usermodel.XSSFWorkbook; 


public class Sampleclass { 

    public static void main(String[] args) { 

     FileInputStream file; 
     try { 
      file = new FileInputStream(new File("C:\\Users\\Rajasekhar\\Desktop\\EmployeeDetails.xlsx")); 
      Workbook book=new XSSFWorkbook(file); 
      System.out.println(book); 

     } catch (FileNotFoundException e) { 
      // TODO Auto-generated catch block 
      e.printStackTrace(); 
     } catch (IOException e) { 
      // TODO Auto-generated catch block 
      e.printStackTrace(); 
     } 
    } 

} 

Servlet

import java.io.File; 
import java.io.FileInputStream; 
import java.io.FileNotFoundException; 
import java.io.IOException; 

import javax.servlet.ServletException; 
import javax.servlet.http.HttpServlet; 
import javax.servlet.http.HttpServletRequest; 
import javax.servlet.http.HttpServletResponse; 

import org.apache.poi.ss.usermodel.Workbook; 
import org.apache.poi.xssf.usermodel.XSSFWorkbook; 


@SuppressWarnings("serial") 
public class sampleServlet extends HttpServlet { 
    @Override 
    public void doGet(HttpServletRequest req, HttpServletResponse resp) 
      { 
     FileInputStream file; 
     try { 
      file = new FileInputStream(new File("C:\\Users\\Rajasekhar\\Desktop\\EmployeeDetails.xlsx")); 
      Workbook book=new XSSFWorkbook(file); 

     } catch (FileNotFoundException e) { 
      System.out.println("exception occured is "+e);  
      e.printStackTrace(); 
     } catch (IOException e) { 
      System.out.println("exception occured is "+e);  
      e.printStackTrace(); 
     } 
    } 

} 

исключение произошло было

SEVERE: Servlet.service() for servlet [upload] in context with path [/Temp2] threw exception [Servlet execution threw an exception] with root cause 
java.lang.ClassNotFoundException: org.apache.poi.xssf.usermodel.XSSFWorkbook 
    at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1718) 
    at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1569) 
    at sampleServlet.doGet(sampleServlet.java:23) 
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:620) 
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:727) 
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:303) 
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208) 
    at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52) 
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:241) 
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208) 
    at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:220) 
    at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:122) 
    at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:501) 
    at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:170) 
    at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:98) 
    at org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:950) 
    at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:116) 
    at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:408) 
    at org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1040) 
    at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:607) 
    at org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:315) 
    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145) 
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615) 
    at java.lang.Thread.run(Thread.java:745) 

Я добавил все необходимые банки apache poi.

+1

убедитесь, что у вас есть апач-пои банку в веб-инф Lib папки – fmodos

+0

Прокомментируйте как вы решили проблему. – Suman

ответ

4

Загрузите poi-ooxml.jar и добавьте его в свой класс.

+0

Я уже добавил poi-ooxml.jar, но это не решает проблему ... – rajasekhar

+1

это в вашем пути класса tomcat? в WEB-INF/lib вашего приложения или в папке lib вашего tomcat? – Jens

+0

Я добавил в приложение (построить путь config _ добавить внешние банки) – rajasekhar

0

я знаю, что это может быть поздно, но проблема заключалась в том, что вы можете игнорировать файл xmlbeans-2.6.0.jar, который находится в отдельном файле с другой апачом банки (OOXML-Lib)

1

Вам нужен файл poi-ooxml.jar в вашем пути к классам, как @Jens сказал ,

Вы используете правильный оператор import, но, похоже, у вас нет файла poi-ooxml.jar в пути класса вашего веб-контейнера.

Если вы используете mavem, вы должны поставить эту зависимость в вашем pom.xml внутри <dependencies> тега:

<dependency> 
     <groupId>org.apache.poi</groupId> 
     <artifactId>poi</artifactId> 
     <version>3.15</version> 
    </dependency> 

    <dependency> 
     <groupId>org.apache.poi</groupId> 
     <artifactId>poi-ooxml</artifactId> 
     <version>3.15</version> 
    </dependency> 
+0

вопрос другой. как вы можете видеть, у него есть правильный импорт: import org.apache.poi.xssf.usermodel.XSSFWorkbook; вы должны прекратить отвечать только на получение очков. -1 –

+0

Благодарим вас за обратную связь [@PedroSequeira] (https://stackoverflow.com/users/5698678/pedro-sequeira), я постараюсь улучшить свой ответ. –

Смежные вопросы