Erro servlet 500

Pessoal, fiz um servlet no eclipse, para imprimir em pdf um jasper.

Adicionei a biblioteca 3.7 do jasperreports.

porem ele da sempre esse erro.

[code]
HTTP Status 500 -


type Exception report

message

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

exception

javax.servlet.ServletException: Error instantiating servlet class servlet.ServletRelatorio
org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102)
org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:298)
org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:857)
org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:588)
org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:489)
java.lang.Thread.run(Unknown Source)

root cause

java.lang.NoClassDefFoundError: net/sf/jasperreports/engine/JRException
java.lang.Class.getDeclaredConstructors0(Native Method)
java.lang.Class.privateGetDeclaredConstructors(Unknown Source)
java.lang.Class.getConstructor0(Unknown Source)
java.lang.Class.newInstance0(Unknown Source)
java.lang.Class.newInstance(Unknown Source)
org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102)
org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:298)
org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:857)
org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:588)
org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:489)
java.lang.Thread.run(Unknown Source)

root cause

java.lang.ClassNotFoundException: net.sf.jasperreports.engine.JRException
org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1645)
org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1491)
java.lang.Class.getDeclaredConstructors0(Native Method)
java.lang.Class.privateGetDeclaredConstructors(Unknown Source)
java.lang.Class.getConstructor0(Unknown Source)
java.lang.Class.newInstance0(Unknown Source)
java.lang.Class.newInstance(Unknown Source)
org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102)
org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:298)
org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:857)
org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:588)
org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:489)
java.lang.Thread.run(Unknown Source)

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


Apache Tomcat/6.0.29[/code]

Pelo que to percebendo ele nao acha a classe net/sf/jasperreports/engine/JRException

Porem, verifiquei que essa classe consta na biblioteca.

Alguem tem nocao o que pode ser?

Olá darkin000,

Verifique o script de Build do seu projeto.

Verifique o ant, caso esteja usando o ant

verifique também se suas classes estao indo do classpath para a pasta web-inf\lib dentro do seu arquivo war ou ear…

O ideal é que as bibliotecas estejam na pasta lib dentro de web-inf

blz
Fallow

entao, as bibliotecas estao na pasta do projeto, eu olhei la e realmente tava la, e muito estranho.

segue meu projeto.

[code]package servlet;

import java.io.IOException;
import java.sql.Connection;
import java.util.Date;
import java.util.HashMap;

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

import net.sf.jasperreports.engine.JRException;
import net.sf.jasperreports.engine.JasperRunManager;

import util.ConexaoFactory;

/**

  • Servlet implementation class for Servlet: geraRelatorio

*/
public class ServletRelatorio extends HttpServlet {

static final long serialVersionUID = 1L;  
@SuppressWarnings("unused")  
private static String caminhoJava;  
  
 //Para abrir a conexão com o banco é necessario emprementar uma classe no java só para fazer a requesição de abrir as sessões com banco.  
private Connection conexao;  

public ServletRelatorio() {  
    conexao = ConexaoFactory.getConnection();  
}  

@SuppressWarnings("unchecked")  
public void doGet(HttpServletRequest request, HttpServletResponse response) {  

    caminhoJava = this.getServletContext().getRealPath("WEB-INF/classes");  
      
            // o getParameter é responsavel por recuperar os parametros passado pela url.  
    String relatorio = request.getParameter("relatorio");  

            // compara se o relatorio é do gerar Os Por data.  
    if(relatorio.equals("osData")){  
        try {  
            relatorioOsPorData(request, response);  
        } catch (JRException e) {  
            e.printStackTrace();  
        }  
    }  
}  
  
  

/** 
 * metodo que gera relatorio de ordem de servico por data 
 * @param request 
 * @param response 
 * @throws JRException  
 */  
@SuppressWarnings("unchecked")  
private void relatorioOsPorData(HttpServletRequest request, HttpServletResponse response) throws JRException {  
    HashMap parametro = new HashMap();  
      
    @SuppressWarnings("unused")  
    Date dataInicial, dataFinal = null;  
    String relatorio = caminhoJava + "\relatorio/osData.jasper";  
      
    String dtInicial = request.getParameter("dataInicial");  
    String dtFinal = request.getParameter("dataFinal");  
      
            //É necessario emprementar uma classe para formatação das data para [Date]  
    dataInicial = util.Funcoes.FormataData(dtInicial);  
    dataFinal = util.Funcoes.FormataData(dtFinal);  
      
    parametro.put("dataInicial", dataInicial);  
    parametro.put("dataFinal", dataFinal);  
      
    byte[] pdf = JasperRunManager.runReportToPdf(relatorio, parametro, conexao);  
    this.exibirRelatorio(pdf, response);  
}  

/** metodo que exibe os relatorios* */  
public void exibirRelatorio(byte[] relatorio, HttpServletResponse response) {  
        ServletOutputStream out = null;  
        response.setContentType("application/pdf");  
        try {  
            out = response.getOutputStream();  
            out.write(relatorio);  
        } catch (IOException e) {  
            e.printStackTrace();  
        }     
}  

} [/code]

Vc está usando Struts2?

O erro da pelo que to vendo por causa dessas 2 bibliotecas

[quote]import net.sf.jasperreports.engine.JRException;
import net.sf.jasperreports.engine.JasperRunManager; [/quote]

e por causa dessas opcoes

try { relatorioOsPorData(request, response); } catch (JRException e) { e.printStackTrace(); }

private void relatorioOsPorData(HttpServletRequest request, HttpServletResponse response) throws JRException {  

byte[] pdf = JasperRunManager.runReportToPdf(relatorio, parametro, conexao); this.exibirRelatorio(pdf, response);

Tente baixar novamente o Jasper e o iReport, adicione o plugin do iReport a sua IDE e configura as libs do Jasper no seu classpath:

exclua sua lib do Jasper e adicione novamente de um novo pacote baixado>

Fallow

Acredito que nao. Esse codigo eu peguei na net.

E muito estranho. eu fiz como pediu, reinstalei tudo, dei clean, ele nao acha essa classe.

E procurei a classe dentro das libs e ta la

Pessoal, resolvi.
Eu tinha colocado no classpath.

Porem a biblioteca nao estava no web-inf/lib

coloquei manualmente la e funcionou.

acheui que ja ia sozinho por ja estar no classpath

vlws

Aproveitando, nao tem como ja manda as bibliotecas que vou utilizar para a web-inf/lib?

pois ainda esta dando varios erros, porem bibliotecas diferentes e to procurando manualmente para colocar la