iReport com JSP

4 respostas
E

Preciso gerar um relatorio via web, entao estou utilizando o iReport. Usando a funcao q fiz numa aplicacao desktop funciona normal, mas, quando utilizo esta mesma funcao em paginas jsp, importando a classe, da erro, alguem poderia dar uma força de como solucionar isso?

Obrigado desde ja!

// Erro gerado

type Exception report

message

description The server encountered an internal error () that prevented it from fulfilling this request.

exception

javax.servlet.ServletException: net/sf/jasperreports/engine/JRDataSource

org.apache.jasper.runtime.PageContextImpl.doHandlePageException(PageContextImpl.java:825)

org.apache.jasper.runtime.PageContextImpl.handlePageException(PageContextImpl.java:758)

org.apache.jsp.jsp.GerarBoleto_jsp._jspService(GerarBoleto_jsp.java:72)

org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:94)

javax.servlet.http.HttpServlet.service(HttpServlet.java:802)

org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:324)

org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:292)

org.apache.jasper.servlet.JspServlet.service(JspServlet.java:236)

javax.servlet.http.HttpServlet.service(HttpServlet.java:802)

root cause

java.lang.NoClassDefFoundError: net/sf/jasperreports/engine/JRDataSource

org.apache.jsp.jsp.GerarBoleto_jsp._jspService(GerarBoleto_jsp.java:57)

org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:94)

javax.servlet.http.HttpServlet.service(HttpServlet.java:802)

org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:324)

org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:292)

org.apache.jasper.servlet.JspServlet.service(JspServlet.java:236)

javax.servlet.http.HttpServlet.service(HttpServlet.java:802)

note The full stack trace of the root cause is available in the Apache Tomcat/5.0.28 logs.


//Pagina que chama a classe relatorio

<%@ page language=java %>

<%@ page import = “java.sql.*, util.Relatorio%>

<%  try

{

String sql="";

Connection con;

con = DriverManager.getConnection(session.getAttribute(url).toString(), sa, “”);

Relatorio relatorio = new Relatorio();

con.close();

}

catch (SQLException e)

{

System.out.println("Erro no sql: " + e.toString());

}

%>

Classe relatorio

package util;

import java.sql.<em>;

import net.sf.jasperreports.engine.</em>;

import java.util.*;

public class Relatorio {
ResultSet rs;

public Relatorio()

{
}

public void gerarRelatorio(Connection con) throws JRException

{

try

{

String sql=“SELECT * FROM ALUNO”;

Statement s = con.createStatement();

rs = s.executeQuery(sql);
JRResultSetDataSource jrRS = new JRResultSetDataSource(rs);
  	HashMap parameters = new HashMap();
  	JasperCompileManager.compileReportToFile("teste.xml", "Teste.jasper");
  	JasperPrint impressao = JasperFillManager.fillReport("Teste.jasper",parameters,jrRS);
  	JasperExportManager.exportReportToHtmlFile(impressao, "teste.html");


      }
  catch (SQLException e)
  {
    System.out.println("Erro no sql: " + e.toString());
  }

  }

}

4 Respostas

_fs

Ele não encontrou o jar do Jasper, coloque-o no classpath da sua aplicação.

ps: ao invés de colocar esse monte de regras de negócio nas páginas jsp, recomendo estudar Servlets.

E

Fala Lipe,
uso o radHat 9 e o classpath esta assim:

CATALINA_HOME="/usr/local/tomcat"
IREPORT="/usr/local/iReport-0.4.0"

CLASSPATH=.:$ANT_HOME/lib:$IREPORT/lib/commons-beanutils.jar:$IREPORT/lib/commons-collections.jar:$IREPORT/lib/commons-digester.jar:$IREPORT/lib/commons-logging-api.jar:$IREPORT/lib/commons-logging.jar:$IREPORT/lib/barbecue-1.1.jar:$IREPORT/lib/itext-1.02b.jar:$IREPORT/lib/iReport.jar:$IREPORT/lib/jasperreports-0.6.1.jar:$CATALINA_HOME/common/lib/servlet-api.jar:$CATALINA_HOME/common/lib/jsp-api.jar

_fs

java.lang.NoClassDefFoundError: net/sf/jasperreports/engine/JRDataSource

Tem certeza que o jar do jasperreports-0.6.1.jar está nesse lugar mesmo?
Não entendo nada de Linux, mas tem certeza que path está declarado corretamente?

Dica: você pode inserir os jars no diretório lib da sua aplicação, assim não precisa ficar adicionando entradas no path do seu micro hehe

E

Esta sim, pois, se utilizar esta funcao para uma aplicacao desktop funciona normal

Criado 20 de janeiro de 2005
Ultima resposta 20 de jan. de 2005
Respostas 4
Participantes 2