Galera já criei meu relatorio no ireport, já compilei, estou com o arquivo.jasper, minha duvida é como utilizar o relatorio em codigo fonte?, gostaria de pegar este relatorio gerar um pdf e salvar em disco, como devo proceder? eu sei fazer ele abrir usando o viewreport, mas neste caso eu quero que ele seja gravado em um endereço com proceder?
Valeu amigo, uma outra duvida tu sabe me dizer como coloco o endereço do arquivo jasper no caso de uma aplicação web? pois no meu exemplo e no teu a gente usou um endereço local da maquina, c:/… e tal, agora em uma aplicaçao web estou tendo problemas em apontar o arquivo.
Ao invés de barras de diretório para montar o caminho do arquivo, utilize “File.separator”, assim se sua aplicação estiver “deployada” em um servidor web em ambiente linux ou windows, o arquivo será encontrado.
No caso de uma aplicação web, o arquivo .jasper pode ser localizado a partir do contexto da aplicação, se ali ele estiver contido. Ex:
Aqui pra mim nao deu certo, eu fiz da seguinte forma, no meu projeto criei um pacote relatorios e dentro deste pacote coloquei todos os aquivos do relatorio lah dentro, e fiz da seguinte forma
o nome do meu contexto é MobileServ o erro gerado é este
net.sf.jasperreports.engine.JRException: java.io.FileNotFoundException: \MobileServ\relatorios\classic.jasper
at net.sf.jasperreports.engine.util.JRLoader.loadObject(JRLoader.java:75)
at net.sf.jasperreports.engine.JasperFillManager.fillReport(JasperFillManager.java:232)
at Serv.MobileServ.getPDF(MobileServ.java:293)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:597)
at com.sun.xml.ws.api.server.InstanceResolver$1.invoke(InstanceResolver.java:246)
at com.sun.xml.ws.server.InvokerTube$2.invoke(InvokerTube.java:146)
at com.sun.xml.ws.server.sei.EndpointMethodHandler.invoke(EndpointMethodHandler.java:257)
at com.sun.xml.ws.server.sei.SEIInvokerTube.processRequest(SEIInvokerTube.java:93)
at com.sun.xml.ws.api.pipe.Fiber.__doRun(Fiber.java:598)
at com.sun.xml.ws.api.pipe.Fiber._doRun(Fiber.java:557)
at com.sun.xml.ws.api.pipe.Fiber.doRun(Fiber.java:542)
at com.sun.xml.ws.api.pipe.Fiber.runSync(Fiber.java:439)
at com.sun.xml.ws.server.WSEndpointImpl$2.process(WSEndpointImpl.java:243)
at com.sun.xml.ws.transport.http.HttpAdapter$HttpToolkit.handle(HttpAdapter.java:444)
at com.sun.xml.ws.transport.http.HttpAdapter.handle(HttpAdapter.java:244)
at com.sun.xml.ws.transport.http.servlet.ServletAdapter.handle(ServletAdapter.java:135)
at com.sun.xml.ws.transport.http.servlet.WSServletDelegate.doGet(WSServletDelegate.java:129)
at com.sun.xml.ws.transport.http.servlet.WSServletDelegate.doPost(WSServletDelegate.java:160)
at com.sun.xml.ws.transport.http.servlet.WSServlet.doPost(WSServlet.java:75)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:637)
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:286)
at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:845)
at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:583)
at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:447)
at java.lang.Thread.run(Thread.java:619)
Caused by: java.io.FileNotFoundException: \MobileServ\relatorios\classic.jasper
... 36 more
Pelo oq ue eu entendi ele nao conseguiu achar o classic.jasper, agora se eu coloco em um endereço local funciona normalmente como mostrei a cima.
[quote=Shakall]Aqui pra mim nao deu certo, eu fiz da seguinte forma, no meu projeto criei um pacote relatorios e dentro deste pacote coloquei todos os aquivos do relatorio lah dentro, e fiz da seguinte forma
o nome do meu contexto é MobileServ o erro gerado é este
net.sf.jasperreports.engine.JRException: java.io.FileNotFoundException: \MobileServ\relatorios\classic.jasper
at net.sf.jasperreports.engine.util.JRLoader.loadObject(JRLoader.java:75)
at net.sf.jasperreports.engine.JasperFillManager.fillReport(JasperFillManager.java:232)
at Serv.MobileServ.getPDF(MobileServ.java:293)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:597)
at com.sun.xml.ws.api.server.InstanceResolver$1.invoke(InstanceResolver.java:246)
at com.sun.xml.ws.server.InvokerTube$2.invoke(InvokerTube.java:146)
at com.sun.xml.ws.server.sei.EndpointMethodHandler.invoke(EndpointMethodHandler.java:257)
at com.sun.xml.ws.server.sei.SEIInvokerTube.processRequest(SEIInvokerTube.java:93)
at com.sun.xml.ws.api.pipe.Fiber.__doRun(Fiber.java:598)
at com.sun.xml.ws.api.pipe.Fiber._doRun(Fiber.java:557)
at com.sun.xml.ws.api.pipe.Fiber.doRun(Fiber.java:542)
at com.sun.xml.ws.api.pipe.Fiber.runSync(Fiber.java:439)
at com.sun.xml.ws.server.WSEndpointImpl$2.process(WSEndpointImpl.java:243)
at com.sun.xml.ws.transport.http.HttpAdapter$HttpToolkit.handle(HttpAdapter.java:444)
at com.sun.xml.ws.transport.http.HttpAdapter.handle(HttpAdapter.java:244)
at com.sun.xml.ws.transport.http.servlet.ServletAdapter.handle(ServletAdapter.java:135)
at com.sun.xml.ws.transport.http.servlet.WSServletDelegate.doGet(WSServletDelegate.java:129)
at com.sun.xml.ws.transport.http.servlet.WSServletDelegate.doPost(WSServletDelegate.java:160)
at com.sun.xml.ws.transport.http.servlet.WSServlet.doPost(WSServlet.java:75)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:637)
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:286)
at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:845)
at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:583)
at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:447)
at java.lang.Thread.run(Thread.java:619)
Caused by: java.io.FileNotFoundException: \MobileServ\relatorios\classic.jasper
... 36 more
Pelo oq ue eu entendi ele nao conseguiu achar o classic.jasper, agora se eu coloco em um endereço local funciona normalmente como mostrei a cima.[/quote]
Como vc estah fazendo para passar o path jasper para impressao? vc pode fazer algo assim:
//sc do tipo ServletContext
File reportFile = new File(sc.getRealPath("/MobileServ/relatorios/classic.jasper ")); //obtendo o caminhdo do arquivo .jasper
//passando o arquivo
JasperPrint print = JasperFillManager.fillReport(reportFile.getPath(), parametros, jrds);
Galera, aquela ajudar resolveu meu caso, mas agora to com outro problema, deu certo daquela forma usando servlet, mas agora preciso criar um pdf, e gravar em disco por uma classe java normal, ai volto no problema do caminho do arquivo jasper, que nao consigo abrir pois o getServletConfig().getServletContext().getRealPath soh esta disponivel em uma classe servlet correto. Como resolver isso usando uma classe normal, para uma aplicação web? No meu caso um WebService.