iReport com JSP

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.;
import net.sf.jasperreports.engine.
;
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());
  }

  }  

}

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.

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

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

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