Erro servlet 500

8 respostas
D

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.
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

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?

8 Respostas

paulo1911

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

D

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

segue meu projeto.
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();  
            }     
    }  
}
A

Vc está usando Struts2?

D

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

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

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);

paulo1911

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

D

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

D

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

D

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

Criado 23 de dezembro de 2010
Ultima resposta 23 de dez. de 2010
Respostas 8
Participantes 3