[Duvida] Caminho do arquivo .jasper ! FileNotFound Exception

6 respostas
GabrielCardelli

Opa galera beleza?

Tenho a seguinte estrutura na minha app:

[url]http://img682.imageshack.us/img682/6569/estrutura.png[/url]

Meu Servlet:

import java.io.IOException;
import java.io.InputStream;
import java.net.URL;
import java.util.HashMap;
import java.util.Map;

import javax.servlet.RequestDispatcher;
import javax.servlet.ServletException;
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.JasperExportManager;
import net.sf.jasperreports.engine.JasperFillManager;
import net.sf.jasperreports.engine.JasperPrint;
import net.sf.jasperreports.engine.JasperReport;
import net.sf.jasperreports.engine.util.JRLoader;

public class GenerateReport extends HttpServlet {
	
	private String		idBoletimParam;
	private String 		caminhoJasper;
	private Map    		mapaParametros;
	private JasperPrint print;
	private String		urlSaida; 
	
	protected void doGet(HttpServletRequest request, HttpServletResponse response)
			throws ServletException, IOException {
		
		caminhoJasper = "report4.jasper";
		urlSaida      = "report4.pdf"; 
		
		System.out.println("URL SAIDA: " + urlSaida);
		
		idBoletimParam = request.getParameter("id_boletim");
		
		System.out.println(idBoletimParam);
		
		mapaParametros = new HashMap();
		mapaParametros.put("entrada_id_boletim_medicao", Integer.parseInt(idBoletimParam));
		
		System.out.println("URL SAIDA: " + urlSaida);
		System.out.println(getServletContext().getContextPath());
		
//		RequestDispatcher rd = request.getRequestDispatcher(caminhoJasper);
//		rd.forward(request, response);
//		
		gerarRelatorio();
		
	}
	
	
	protected void doPost(HttpServletRequest request, HttpServletResponse response)
			throws ServletException, IOException {
		
		doGet(request, response);
		
	}
	
	private void gerarRelatorio(){
		   	
			try {
				 

				print = JasperFillManager.fillReport("report4.jasper",mapaParametros); 

//				JasperFillManager.fillReport(jasperReport,mapaParametros);
				JasperExportManager.exportReportToPdfFile(print,urlSaida);  
				
			} catch (JRException e) {
			
				e.printStackTrace();
			}  

	}

}
A Exception:
17:15:46,498 INFO  [STDOUT] URL SAIDA: report4.pdf
17:15:46,498 INFO  [STDOUT] 321
17:15:46,498 INFO  [STDOUT] URL SAIDA: report4.pdf
17:15:46,498 INFO  [STDOUT] /Report
17:15:46,499 ERROR [STDERR] net.sf.jasperreports.engine.JRException: java.io.FileNotFoundException: report4.jasper
17:15:46,499 ERROR [STDERR] 	at net.sf.jasperreports.engine.util.JRLoader.loadObject(JRLoader.java:77)
17:15:46,499 ERROR [STDERR] 	at net.sf.jasperreports.engine.JasperFillManager.fillReport(JasperFillManager.java:267)
17:15:46,499 ERROR [STDERR] 	at br.com.gabriel.servlet.GenerateReport.gerarRelatorio(GenerateReport.java:68)
17:15:46,499 ERROR [STDERR] 	at br.com.gabriel.servlet.GenerateReport.doGet(GenerateReport.java:51)
17:15:46,499 ERROR [STDERR] 	at javax.servlet.http.HttpServlet.service(HttpServlet.java:690)
17:15:46,499 ERROR [STDERR] 	at javax.servlet.http.HttpServlet.service(HttpServlet.java:803)
17:15:46,499 ERROR [STDERR] 	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:290)
17:15:46,499 ERROR [STDERR] 	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
17:15:46,499 ERROR [STDERR] 	at org.jboss.web.tomcat.filters.ReplyHeaderFilter.doFilter(ReplyHeaderFilter.java:96)
17:15:46,499 ERROR [STDERR] 	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235)
17:15:46,499 ERROR [STDERR] 	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
17:15:46,499 ERROR [STDERR] 	at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:230)
17:15:46,499 ERROR [STDERR] 	at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:175)
17:15:46,499 ERROR [STDERR] 	at org.jboss.web.tomcat.security.SecurityAssociationValve.invoke(SecurityAssociationValve.java:182)
17:15:46,499 ERROR [STDERR] 	at org.jboss.web.tomcat.security.JaccContextValve.invoke(JaccContextValve.java:84)
17:15:46,499 ERROR [STDERR] 	at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:127)
17:15:46,499 ERROR [STDERR] 	at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102)
17:15:46,499 ERROR [STDERR] 	at org.jboss.web.tomcat.service.jca.CachedConnectionValve.invoke(CachedConnectionValve.java:157)
17:15:46,499 ERROR [STDERR] 	at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)
17:15:46,499 ERROR [STDERR] 	at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:262)
17:15:46,499 ERROR [STDERR] 	at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:844)
17:15:46,499 ERROR [STDERR] 	at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:583)
17:15:46,499 ERROR [STDERR] 	at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:446)
17:15:46,499 ERROR [STDERR] 	at java.lang.Thread.run(Thread.java:595)
17:15:46,499 ERROR [STDERR] Caused by: java.io.FileNotFoundException: report4.jasper
17:15:46,499 ERROR [STDERR] 	... 24 more

URL que chamei:

http://localhost:8080/Report/GenerateReport?id_boletim=321

Quem puder ajudar, agradeço! Abraço.

6 Respostas

alexcomput

Cara acredito que esse erro seria porque não esta achando o arquivo "report4.jasper " então… tenta colocar o diretório do arquivo completo…ou seja.
exemplo levando em consideração que ele está dentro de uma pasta chamando relatorios que esta dentro de C;

print = JasperFillManager.fillReport("C:\\relatorios\\report4.jasper",mapaParametros);
walissongpi

GabrielCardelli:

private void gerarRelatorio(){
	   	
		try {
			 

			print = JasperFillManager.fillReport("report4.jasper",mapaParametros); 

//				JasperFillManager.fillReport(jasperReport,mapaParametros);

JasperExportManager.exportReportToPdfFile(print,urlSaida);
<pre><code>		} catch (JRException e) {
		
			e.printStackTrace();
		}  

}
}

.


desse jeito acredito que vc deve colocar o arquivo jasper dentro da pasta do projeto, ou fazer igual o amigo acime aí disse. :smiley:

furutani

Coloca o report4.jasper no mesmo pacote do GenerateReport.java

W

Koé Furutani, coloquei o report4.jasper no mesmo pacote porém o problema persiste, eu consigo criar o pdf mas apenas dentro de uma pasta no diretório “C:” mas a idéia e criar o pdf dentro de uma pasta dentro do Projeto.

GabrielCardelli

Passado um tempo conseguimos resolver o problema,
O Jasper só pega caminho do disco então na aplicação tivemos que colocar

um getRealPath("/") + “Nome do Jasper”; isso porque o jasper está dentro de web content.

Abraço e obrigado a todos.

furutani

Não necessariamente você pode pegar ele com getResorceAsStream()
Dá uma olhada http://www.furutani.com.br/2010/02/nullpointerexception-ou-filenotfoundexception-ao-executar-relatorios-com-jasper-reports/

Criado 20 de fevereiro de 2010
Ultima resposta 23 de fev. de 2010
Respostas 6
Participantes 5