Estou com dificuldade em gerar um relatório pelo NetBeans usando o JasperReport.
O erro:
Type Exception Report
Message Servlet execution threw an exception
Description The server encountered an unexpected condition that prevented it from fulfilling the request.
Exception
javax.servlet.ServletException: Servlet execution threw an exception org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:53) org.netbeans.modules.web.monitor.server.MonitorFilter.doFilter(MonitorFilter.java:368)
Root Cause
java.lang.NoClassDefFoundError: Could not initialize class org.apache.commons.javaflow.core.StackRecorder net.sf.jasperreports.engine.fill.BaseReportFiller.fill(BaseReportFiller.java) net.sf.jasperreports.engine.fill.JRFiller.fill(JRFiller.java:120) net.sf.jasperreports.engine.JasperFillManager.fill(JasperFillManager.java:319) net.sf.jasperreports.engine.JasperRunManager.runToPdf(JasperRunManager.java:242) net.sf.jasperreports.engine.JasperRunManager.runReportToPdf(JasperRunManager.java:723) dao.RequisitoDAO.gerarRelatorio(RequisitoDAO.java:44) servlet.acao.doGet(acao.java:133) javax.servlet.http.HttpServlet.service(HttpServlet.java:634) javax.servlet.http.HttpServlet.service(HttpServlet.java:741) org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:53) org.netbeans.modules.web.monitor.server.MonitorFilter.doFilter(MonitorFilter.java:368)
Note A pilha de erros completa da causa principal está disponível nos logs do servidor.
Botão para gerar PDF:
<a id=pdfButton type="text" href="/GerenciadorProjetos/acao?param=relatorioRequisito">Gerar PDF</a>
servlet acao:
else if (parametro.equals(“relatorioRequisito”)) {
byte[] bytes = new RequisitoDAO().gerarRelatorio();response.setContentType("application/pdf"); response.setContentLength(bytes.length); try (ServletOutputStream outStream = response.getOutputStream()) { outStream.write(bytes, 0, bytes.length); outStream.flush(); }
RequisitoDAO().gerarRelatorio():
public class RequisitoDAO {
ConectaBanco conecta = new ConectaBanco(); //global String sql = "";
public byte[] gerarRelatorio() {
try {File reportFile = new File(getClass().getClassLoader().getResource("relatorios/relatorioRequisitos.jasper").getPath()); System.out.println("caminho rel: " + reportFile.getPath()); Map parameters = new HashMap(); var bytes = JasperRunManager.runReportToPdf(reportFile.getPath(), parameters, conecta.getCon()); return bytes; } catch (Exception e) { System.out.println("erro ao gerar relatorio: " + e); } return null; }
método getCon():
public Connection getCon() {
conn = null;
try {
Class.forName(driver);
} catch (ClassNotFoundException ex) {
System.out.println("Error: " + ex);
}
try {
conn = DriverManager.getConnection(path, user, pass);
} catch (SQLException ex) {
System.out.println("Error: " + ex);
}return conn; }
Libraries:
Fico grato pelo auxílio de vocês, não consigo descobrir o motivo de não estar funcionando. Dentro do JasperStudio consegui montar e conectar com o BD sem problemas, mas via NetBeans não está dando certo…