Apache POI não roda dentro de Servlet

Olá à todos, tudo bem?
Estou preso num projeto e preciso urgentemente de ajuda. Estou tentando ler e apresentar dados de um arquivo xls (Excel) dentro de uma página HTML que utiliza a tecnologia Servlet.
Primeiro tentei usar a lib jxl e depois a Apache POI (achando que poderia ser algum problema na anterior).
Entretanto não consigo fazer nenhuma das bibliotecas rodar dentro do Servlet.
Segue o erro:

exception

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

root cause

java.lang.NoClassDefFoundError: org/apache/poi/hssf/usermodel/HSSFWorkbook
	psb_classes.Relatorio.processRequest(Relatorio.java:56)
	psb_classes.Relatorio.doGet(Relatorio.java:102)
	javax.servlet.http.HttpServlet.service(HttpServlet.java:621)
	javax.servlet.http.HttpServlet.service(HttpServlet.java:728)
	org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:51)

Espero que possam me salvar.

Segue exemplo do meu código:

import java.io.IOException;
import java.io.PrintWriter;
import java.io.File;
import java.io.FileInputStream;
import java.util.Iterator;
import org.apache.poi.hssf.usermodel.HSSFSheet;
import org.apache.poi.hssf.usermodel.HSSFWorkbook;
import org.apache.poi.ss.usermodel.Cell;
import org.apache.poi.ss.usermodel.Row;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
	
@WebServlet(name = "Relatorio", urlPatterns = {"/Relatorio"})


public class Relatorio extends HttpServlet {
	private static final long serialVersionUID = 1L;
	
    protected void processRequest(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        response.setContentType("text/html;charset=UTF-8");
        PrintWriter out = response.getWriter(); 

try{
        	FileInputStream arquivo = new FileInputStream(new File("arquivo.xlsx"));
        	HSSFWorkbook workbook = new HSSFWorkbook(arquivo);
        	HSSFSheet sheet = workbook.getSheetAt(0);
            Iterator<Row> rowIterator = sheet.iterator();

            quantidade = 0;
            
            int i = 0;
            while(rowIterator.hasNext()){
            	Row row = rowIterator.next();
            	Iterator<Cell> cellIterator = row.cellIterator();
            	
            	while(cellIterator.hasNext()){
            		Cell cell = cellIterator.next();
            		if(cell.getColumnIndex() == 0){
            			nmLocalidade[i] = cell.getStringCellValue();
            			i++;
            			quantidade++;
            		}
            	}
            }
            
            workbook.close();
    	}
    	catch(Exception e){
            out.println("Problema com a base de dados: " + e.getMessage());
            out.println("<br>");
            out.println("Tente novamente ou entre em contato com o responsável<br><br>");
    	}

Os .jar do POI então na pasta lib de seu webapp?

1 curtida

Era exatamente isso, obrigado pela solução!
Desculpe o incomodo cm problema simples!