Jasper

Olá Pessoal, estou tentando fazer um relatório e como exemplo para estudo peguei um breve tutorial do próprio site JasperForge mas não estou conseguindo executá-lo, segue o erro.

net.sf.jasperreports.engine.JRException: java.io.FileNotFoundException: \resource\report1.jasper
at net.sf.jasperreports.engine.util.JRLoader.loadObject(JRLoader.java:84)
at net.sf.jasperreports.engine.JasperFillManager.fillReport(JasperFillManager.java:536)
at control.CtrlRelat.doGet(CtrlRelat.java:29)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:617)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:290)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:233)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:191)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:128)
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:293)
at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:849)
at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:583)
at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:454)
at java.lang.Thread.run(Unknown Source)
Caused by: java.io.FileNotFoundException: \resource\report1.jasper
… 17 more

resource é um pacote da minha aplicação, o arquivo .jasper está dentro deste pacote.
Creio que seja erro por não achar o caminho, então como especificar o caminho corretamente?

Código da Servlet:

@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp)
throws ServletException, IOException {
String fileName = “/resource/report1.jasper”;
String outFileName = “test.pdf”;
HashMap hm = new HashMap();
try {
// Fill the report using an empty data source
JasperPrint print = JasperFillManager.fillReport(fileName, hm, new JREmptyDataSource());

        // Create a PDF exporter
        JRExporter exporter = new JRPdfExporter();
        
        // Configure the exporter (set output file name and print object)
        exporter.setParameter(JRExporterParameter.OUTPUT_FILE_NAME, outFileName);
        exporter.setParameter(JRExporterParameter.JASPER_PRINT, print);
        
        // Export the PDF file
        exporter.exportReport();
        
    } catch (JRException e) {
        e.printStackTrace();
        System.exit(1);
    } catch (Exception e) {
        e.printStackTrace();
        System.exit(1);
    
}
	resp.sendRedirect("sucesso.jsp");
}

}

Obrigado,

Boa tarde, esta sua pasta resource esta na raiz do webContent (caso seu projeto esteja no eclipse)?
Pode ser problema de acesso ao arquivo.

[]'s

Esta pasta resource não está na raiz do WebContent.
Ela deve estar?

como suas paginas jsp, xhtml, arquivos javascript, td tem q ficar disponivel na pasta webcontent, pois é somente la que o browser tem acesso.
Tente mudar sua pasta para a raiz do webcontent pra ver se resolve teu problema.

[]'s

Não resolveu, criei uma pasta “jasper” dentro de WebContent e fiz a referencia:

String fileName = “jasper/report1.jasper”;

E me retornou:

net.sf.jasperreports.engine.JRException: java.io.FileNotFoundException: jasper\report1.jasper

Adiciona uma / a frente do jasper pra indicar a raiz do seu contexto.
Ficaria assim:

String fileName = "/jasper/report1.jasper";

[]'s

[quote=thiagocg]Adiciona uma / a frente do jasper pra indicar a raiz do seu contexto.
Ficaria assim:

String fileName = "/jasper/report1.jasper";

[]'s[/quote]

Cara, mesmo assim não funcionou tb :shock:
Mesmo erro!

Cara, o duro é que to sem os jar’s aqui pra fazer uns testes, vou ver se posto alguma coisa pra vc mais tarde se vc não achar uma solução.

[]'s

Mt Obrigado! :thumbup: