Duvida utilizar JasperReport

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?

JasperPrint print;
        try {
            print = new JasperFillManager().fillReport("classic.jasper", param, banco.conecta_relatorio());
            JasperViewer vi=new JasperViewer(print,false);
            vi.viewReport(print,false);
        } catch (JRException ex) {
            ex.printStackTrace();
        }

Obrigado!!!

OutputStream output = new FileOutputStream(new File("C:/JasperReports/catalog.pdf")); JasperExportManager.exportReportToPdfStream(print, output);

Maiores detalhes: http://www.theregister.co.uk/2006/10/24/jasperreports_tutorial/

flw

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:

(File.separator + "ContextoDaAplicação" + File.separator +"relatorios" + File.separator + "classic.jasper")

Ficaria assim:

/ContextoDaAplicacao/relatorios/classic.jasper

Assim os seus arquivos .jasper pode ser alojados dentro desta pasta “relatorios”.

É uma opção…

[]'s

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

JasperPrint impressao = JasperFillManager.fillReport(File.separator + "MobileServ" + File.separator +"relatorios" + File.separator + "classic.jasper", param, MySQL.getCon())

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

JasperPrint impressao = JasperFillManager.fillReport(File.separator + "MobileServ" + File.separator +"relatorios" + File.separator + "classic.jasper", param, MySQL.getCon())

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

Veja um exemplo com mais detalhes aqui
Boa sorte!

consegui resolver desta forma

impressao = JasperFillManager.fillReport(getServletConfig().getServletContext().getRealPath("/WEB-INF/classes/relatorios/classic.jasper"),param,MySQL.getCon());

Valeu pela ajuda de todos, agora consegui criar, gravar em disco, e passar a url para um site valeu!!!

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.