Relatórios com JasperMaker

9 respostas
B

Boa tarde,

Pessoal, novamente venho pedir ajuda de vcs, estou tentando emitir relatórios com o ireport e jasperMaker, só que quando tento com com o relatório master e com sub da um erro:

meu controller:

<a class="mention" href="/u/get">@Get</a>

<a class="mention" href="/u/path">@Path</a>("/relatorio/relHistProc/{idProcessos}")

public Download geraRelatorioHistProc(Long idProcessos) {

// aqui vc monta a coleção para ser usada como DataSource no jasper

// e coloca seus parametros (se quiser) em um mapa de parametros…

List processos = this.pdao.relatorioHistProc(idProcessos);

Map<String, Object> map = new HashMap<String, Object>();

map.put(“COD_PROCESSO”, idProcessos);

map.put(“HIST_COD_PROC”, idProcessos);

return jasperMaker.makePdf(“Relatorio_Historico.jasper”, processos,
“Relatorio_Hist_Proc.pdf”, false, map)
;

}

o relatório master:

esta assim o caminho:


o erro é o seguinte:

br.com.caelum.vraptor.InterceptionException: exception raised, check root cause for details: java.lang.RuntimeException: net.sf.jasperreports.engine.JRException: Could not load object from location : \Relatorio_Sb.jasper

br.com.caelum.vraptor.interceptor.ExecuteMethodInterceptor.intercept(ExecuteMethodInterceptor.java:96)

br.com.caelum.vraptor.core.ToInstantiateInterceptorHandler.execute(ToInstantiateInterceptorHandler.java:54)

br.com.caelum.vraptor.core.DefaultInterceptorStack.next(DefaultInterceptorStack.java:54)

br.com.caelum.vraptor.core.LazyInterceptorHandler.execute(LazyInterceptorHandler.java:61)

br.com.caelum.vraptor.core.DefaultInterceptorStack.next(DefaultInterceptorStack.java:54)

br.com.caelum.vraptor.interceptor.ParametersInstantiatorInterceptor.intercept(ParametersInstantiatorInterceptor.java:89)

br.com.caelum.vraptor.core.LazyInterceptorHandler.execute(LazyInterceptorHandler.java:59)

br.com.caelum.vraptor.core.DefaultInterceptorStack.next(DefaultInterceptorStack.java:54)

br.com.caelum.vraptor.interceptor.ExceptionHandlerInterceptor.intercept(ExceptionHandlerInterceptor.java:71)

br.com.caelum.vraptor.core.ToInstantiateInterceptorHandler.execute(ToInstantiateInterceptorHandler.java:54)

br.com.caelum.vraptor.core.DefaultInterceptorStack.next(DefaultInterceptorStack.java:54)

br.com.caelum.vraptor.interceptor.FlashInterceptor.intercept(FlashInterceptor.java:83)

br.com.caelum.vraptor.core.ToInstantiateInterceptorHandler.execute(ToInstantiateInterceptorHandler.java:54)

br.com.caelum.vraptor.core.DefaultInterceptorStack.next(DefaultInterceptorStack.java:54)

br.com.caelum.vraptor.core.ToInstantiateInterceptorHandler.execute(ToInstantiateInterceptorHandler.java:56)

br.com.caelum.vraptor.core.DefaultInterceptorStack.next(DefaultInterceptorStack.java:54)

br.com.caelum.vraptor.interceptor.InstantiateInterceptor.intercept(InstantiateInterceptor.java:4

br.com.caelum.vraptor.core.ToInstantiateInterceptorHandler.execute(ToInstantiateInterceptorHandler.java:54)

br.com.caelum.vraptor.core.DefaultInterceptorStack.next(DefaultInterceptorStack.java:54)

br.com.caelum.vraptor.core.ToInstantiateInterceptorHandler.execute(ToInstantiateInterceptorHandler.java:56)

br.com.caelum.vraptor.core.DefaultInterceptorStack.next(DefaultInterceptorStack.java:54)

br.com.caelum.vraptor.interceptor.ResourceLookupInterceptor.intercept(ResourceLookupInterceptor.java:69)

br.com.caelum.vraptor.core.ToInstantiateInterceptorHandler.execute(ToInstantiateInterceptorHandler.java:54)

br.com.caelum.vraptor.core.DefaultInterceptorStack.next(DefaultInterceptorStack.java:54)

br.com.caelum.vraptor.core.EnhancedRequestExecution.execute(EnhancedRequestExecution.java:23)

br.com.caelum.vraptor.VRaptor$1.insideRequest(VRaptor.java:92)

br.com.caelum.vraptor.ioc.guice.GuiceProvider.provideForRequest(GuiceProvider.java:76)

br.com.caelum.vraptor.VRaptor.doFilter(VRaptor.java:89)

root cause
java.lang.RuntimeException: net.sf.jasperreports.engine.JRException: Could not load object from location : \Relatorio_Sb.jasper

br.com.jucesp.modelos.JasperMaker.makePdf(JasperMaker.java:116)

br.com.jucesp.controller.RelatoriosController.geraRelatorioHistProc(RelatoriosController.java:63)

sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)

sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)

sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)

java.lang.reflect.Method.invoke(Unknown Source)

br.com.caelum.vraptor.interceptor.ExecuteMethodInterceptor.intercept(ExecuteMethodInterceptor.java:61)

br.com.caelum.vraptor.core.ToInstantiateInterceptorHandler.execute(ToInstantiateInterceptorHandler.java:54)

br.com.caelum.vraptor.core.DefaultInterceptorStack.next(DefaultInterceptorStack.java:54)

br.com.caelum.vraptor.core.LazyInterceptorHandler.execute(LazyInterceptorHandler.java:61)

br.com.caelum.vraptor.core.DefaultInterceptorStack.next(DefaultInterceptorStack.java:54)

br.com.caelum.vraptor.interceptor.ParametersInstantiatorInterceptor.intercept(ParametersInstantiatorInterceptor.java:89)

br.com.caelum.vraptor.core.LazyInterceptorHandler.execute(LazyInterceptorHandler.java:59)

br.com.caelum.vraptor.core.DefaultInterceptorStack.next(DefaultInterceptorStack.java:54)

br.com.caelum.vraptor.interceptor.ExceptionHandlerInterceptor.intercept(ExceptionHandlerInterceptor.java:71)

br.com.caelum.vraptor.core.ToInstantiateInterceptorHandler.execute(ToInstantiateInterceptorHandler.java:54)

br.com.caelum.vraptor.core.DefaultInterceptorStack.next(DefaultInterceptorStack.java:54)

br.com.caelum.vraptor.interceptor.FlashInterceptor.intercept(FlashInterceptor.java:83)

br.com.caelum.vraptor.core.ToInstantiateInterceptorHandler.execute(ToInstantiateInterceptorHandler.java:54)

br.com.caelum.vraptor.core.DefaultInterceptorStack.next(DefaultInterceptorStack.java:54)

br.com.caelum.vraptor.core.ToInstantiateInterceptorHandler.execute(ToInstantiateInterceptorHandler.java:56)

br.com.caelum.vraptor.core.DefaultInterceptorStack.next(DefaultInterceptorStack.java:54)

br.com.caelum.vraptor.interceptor.InstantiateInterceptor.intercept(InstantiateInterceptor.java:4

br.com.caelum.vraptor.core.ToInstantiateInterceptorHandler.execute(ToInstantiateInterceptorHandler.java:54)

br.com.caelum.vraptor.core.DefaultInterceptorStack.next(DefaultInterceptorStack.java:54)

br.com.caelum.vraptor.core.ToInstantiateInterceptorHandler.execute(ToInstantiateInterceptorHandler.java:56)

br.com.caelum.vraptor.core.DefaultInterceptorStack.next(DefaultInterceptorStack.java:54)

br.com.caelum.vraptor.interceptor.ResourceLookupInterceptor.intercept(ResourceLookupInterceptor.java:69)

br.com.caelum.vraptor.core.ToInstantiateInterceptorHandler.execute(ToInstantiateInterceptorHandler.java:54)

br.com.caelum.vraptor.core.DefaultInterceptorStack.next(DefaultInterceptorStack.java:54)

br.com.caelum.vraptor.core.EnhancedRequestExecution.execute(EnhancedRequestExecution.java:23)

br.com.caelum.vraptor.VRaptor$1.insideRequest(VRaptor.java:92)

br.com.caelum.vraptor.ioc.guice.GuiceProvider.provideForRequest(GuiceProvider.java:76)

br.com.caelum.vraptor.VRaptor.doFilter(VRaptor.java:89)

root cause
net.sf.jasperreports.engine.JRException: Could not load object from location : \Relatorio_Sb.jasper

net.sf.jasperreports.engine.util.JRLoader.loadObjectFromLocation(JRLoader.java:267)

net.sf.jasperreports.engine.fill.JRFillSubreport.evaluateSubreport(JRFillSubreport.java:310)

net.sf.jasperreports.engine.fill.JRFillSubreport.evaluate(JRFillSubreport.java:259)

net.sf.jasperreports.engine.fill.JRFillElementContainer.evaluate(JRFillElementContainer.java:275)

net.sf.jasperreports.engine.fill.JRFillBand.evaluate(JRFillBand.java:426)

net.sf.jasperreports.engine.fill.JRVerticalFiller.fillColumnBand(JRVerticalFiller.java:1380)

net.sf.jasperreports.engine.fill.JRVerticalFiller.fillDetail(JRVerticalFiller.java:692)

net.sf.jasperreports.engine.fill.JRVerticalFiller.fillReportStart(JRVerticalFiller.java:255)

net.sf.jasperreports.engine.fill.JRVerticalFiller.fillReport(JRVerticalFiller.java:113)

net.sf.jasperreports.engine.fill.JRBaseFiller.fill(JRBaseFiller.java:879)

net.sf.jasperreports.engine.fill.JRBaseFiller.fill(JRBaseFiller.java:801)

net.sf.jasperreports.engine.fill.JRFiller.fillReport(JRFiller.java:89)

net.sf.jasperreports.engine.JasperFillManager.fillReport(JasperFillManager.java:601)

net.sf.jasperreports.engine.JasperFillManager.fillReport(JasperFillManager.java:517)

br.com.jucesp.modelos.JasperMaker.makePdf(JasperMaker.java:97)

br.com.jucesp.controller.RelatoriosController.geraRelatorioHistProc(RelatoriosController.java:63)

sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)

sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)

sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)

java.lang.reflect.Method.invoke(Unknown Source)

br.com.caelum.vraptor.interceptor.ExecuteMethodInterceptor.intercept(ExecuteMethodInterceptor.java:61)

br.com.caelum.vraptor.core.ToInstantiateInterceptorHandler.execute(ToInstantiateInterceptorHandler.java:54)

br.com.caelum.vraptor.core.DefaultInterceptorStack.next(DefaultInterceptorStack.java:54)

br.com.caelum.vraptor.core.LazyInterceptorHandler.execute(LazyInterceptorHandler.java:61)

br.com.caelum.vraptor.core.DefaultInterceptorStack.next(DefaultInterceptorStack.java:54)

br.com.caelum.vraptor.interceptor.ParametersInstantiatorInterceptor.intercept(ParametersInstantiatorInterceptor.java:89)

br.com.caelum.vraptor.core.LazyInterceptorHandler.execute(LazyInterceptorHandler.java:59)

br.com.caelum.vraptor.core.DefaultInterceptorStack.next(DefaultInterceptorStack.java:54)

br.com.caelum.vraptor.interceptor.ExceptionHandlerInterceptor.intercept(ExceptionHandlerInterceptor.java:71)

br.com.caelum.vraptor.core.ToInstantiateInterceptorHandler.execute(ToInstantiateInterceptorHandler.java:54)

br.com.caelum.vraptor.core.DefaultInterceptorStack.next(DefaultInterceptorStack.java:54)

br.com.caelum.vraptor.interceptor.FlashInterceptor.intercept(FlashInterceptor.java:83)

br.com.caelum.vraptor.core.ToInstantiateInterceptorHandler.execute(ToInstantiateInterceptorHandler.java:54)

br.com.caelum.vraptor.core.DefaultInterceptorStack.next(DefaultInterceptorStack.java:54)

br.com.caelum.vraptor.core.ToInstantiateInterceptorHandler.execute(ToInstantiateInterceptorHandler.java:56)

br.com.caelum.vraptor.core.DefaultInterceptorStack.next(DefaultInterceptorStack.java:54)

br.com.caelum.vraptor.interceptor.InstantiateInterceptor.intercept(InstantiateInterceptor.java:4

br.com.caelum.vraptor.core.ToInstantiateInterceptorHandler.execute(ToInstantiateInterceptorHandler.java:54)

br.com.caelum.vraptor.core.DefaultInterceptorStack.next(DefaultInterceptorStack.java:54)

br.com.caelum.vraptor.core.ToInstantiateInterceptorHandler.execute(ToInstantiateInterceptorHandler.java:56)

br.com.caelum.vraptor.core.DefaultInterceptorStack.next(DefaultInterceptorStack.java:54)

br.com.caelum.vraptor.interceptor.ResourceLookupInterceptor.intercept(ResourceLookupInterceptor.java:69)

br.com.caelum.vraptor.core.ToInstantiateInterceptorHandler.execute(ToInstantiateInterceptorHandler.java:54)

br.com.caelum.vraptor.core.DefaultInterceptorStack.next(DefaultInterceptorStack.java:54)

br.com.caelum.vraptor.core.EnhancedRequestExecution.execute(EnhancedRequestExecution.java:23)

br.com.caelum.vraptor.VRaptor$1.insideRequest(VRaptor.java:92)

br.com.caelum.vraptor.ioc.guice.GuiceProvider.provideForRequest(GuiceProvider.java:76)

br.com.caelum.vraptor.VRaptor.doFilter(VRaptor.java:89)

acusa que não esta localizando o arquivo, mas esta na mesma pasta do relatório master.

9 Respostas

Metaleiro

Sem ser chato, ele não está localizando o arquivo no diretório que você especifica:

Could not load object from location : \Relatorio_Sb.jasper

Verifique o diretório onde está o .jasper

B

o arquivo esta na mesma pasta do master, não estou entendendo esse erro, estranho

Metaleiro

Já tentou ver no código, durante um DEBUG se ele está pegando o caminho correto ?

B

Sim, o estranho que o que vi no forum sobre o jaspermaker, é para deixar todos os arquivos na mesma pasta se eu tirar o sub e funciona

B

Vc tem algum código que através do vraptor consiga trabalhar com os relatorios???

Metaleiro

Eu usei isso aqui muito Struts 2

mas usei uma vez dessa forma :

/**
     * Método responsável por gerar o PDF da página para impressão
     *
     * @param list Recebe uma lista de beans para preenchimento de campos
     */
    public static void generatorJasperToPdf(ArrayList list, long cod_tipo, CommandContext context) {

        HashMap map = new HashMap();
        map.put(17L, "/report/criacao_de_programas.jrxml");

        File reportFile = new File(context.getRequest().getServletRequest().getRealPath(map.get(cod_tipo).toString()));
        File reportSubFile = new File(context.getRequest().getServletRequest().getRealPath("/report/"));

        HashMap&lt;String, String&gt; parametros = new HashMap&lt;String, String&gt;();
        parametros.put("SUBREPORT_DIR", reportSubFile.getPath() + "\\");

        try {

            FileInputStream input = new FileInputStream(reportFile.getAbsolutePath());
            JasperReport jr = JasperCompileManager.compileReport(input);
            JRBeanCollectionDataSource ds = new JRBeanCollectionDataSource(list);
            JasperPrint impressao = JasperFillManager.fillReport(jr, parametros, ds);

            byte[] bytes = JasperExportManager.exportReportToPdf(impressao);

            context.getResponse().setContentType("application/pdf");
            context.getResponse().setHeader("Content-Disposition", "attachment; filename=\"relatorio.pdf\"");
            context.getResponse().getOutputStream().write(bytes);
            context.getResponse().getOutputStream().close();

        } catch (FileNotFoundException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        } catch (JRException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        } catch (IOException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
    }
B

Obrigado, vou tentar usar, pois estou usando hibernate e vraptor

Metaleiro

Usei esse código com Struts 1 não sei se vai te ajudar.

Com Struts 2 faço tudo de uma forma diferente.

B

Metaleiro, obrigado pela atenção vou tentar adaptar se consegui coloco como foi.

Criado 3 de janeiro de 2012
Ultima resposta 5 de jan. de 2012
Respostas 9
Participantes 2