Onde Colocar o arquivo .jasper?

Olá Pessoal…

onde devo colocar o arquivo .jasper em uma aplicação web???
Uso o Struts e estou chamando o arquivo .jasper de uma classe do Form do Struts…

tentei colocar no WEB-INF mas retornou uma msg falando que não encontrou o arquivo…

java.io.FileNotFoundException:

E aí Fábio.

É só colocar o .jasper no diretório raiz do seu projeto.

eu coloquei agora e continua dando o mesmo erro…
vou colocar meu código pra ver se tem alguma coisa errado…

JREmptyDataSource ED = new JREmptyDataSource();
		JRBeanCollectionDataSource BCD = new JRBeanCollectionDataSource(l);							
		Hashtable ht = new Hashtable();
		ht.put("comMot", BCD);
		try{
			
			JasperReport relatorio = (JasperReport) JRLoader.
				loadObject("RelComissaoDiarioMotorista.jasper");
			JasperPrint impressao = new JasperPrint();
			impressao = JasperFillManager.fillReport(relatorio, ht, ED);
			byte[] buffer = JasperExportManager.exportReportToPdf(impressao);

Tente fazer o seguinte:

Comente essas linhas:

Agora inclua essa no lugar da anterior:

Tenta assim e vê se funciona.

seguinte, consegui resolver de outra forma…
segue código abaixo, as vezes pode ser útil para alguém…

String path = request.getRealPath("RelComissaoDiarioMotorista.jasper");
			JasperReport relatorio = (JasperReport) JRLoader.
				loadObject(path);

funcionou blz… t+

e tb coloquei meu .jasper em WebRoot
flw

e ae…

amigo, to com o msmo problema soh que eh em uma aplicação desktop.

e esse código naum resolve pra mim.

vc saberia alguma outra solução.

obrigado.

[]'s

kra, pior q ñ sei ñ…

Coloca seu código aí pra gente poder dar uma olhada. :roll:

O problema é que naum consegue achar o “arquivo.jasper”

            Map parameters = new HashMap();
            
            JasperPrint jasperPrint = JasperFillManager.fillReport("arquivo.jasper", parameters, con);
            
            JRViewer view = new JRViewer(jasperPrint);

ele emite o seguinte erro

net.sf.jasperreports.engine.JRException: java.io.FileNotFoundException: arquivo.jasper

public class RelComissaoAction extends Action {

private final static Logger log = Logger.getLogger("comma");
SimpleDateFormat formataData = new SimpleDateFormat("yyyyMMdd");

public ActionForward execute(ActionMapping mapping, ActionForm form,HttpServletRequest request, HttpServletResponse response) {
	RelComissaoForm RCForm = (RelComissaoForm) form;// TODO Auto-generated method stub
	if(request.getParameter("gerarRelComisDiario") != null){			
		if(RCForm.getListrcmMot() != null || RCForm.getListrcmAjud() != null){			
					
			RelComissaoNegocio rcn = new RelComissaoNegocio();
			GregorianCalendar cal = new GregorianCalendar(Integer.parseInt(RCForm.getDtDia().substring(6, 10)), //modifica a data da carga da jsp de dd/mm/yyyy para yyyymmdd
					Integer.parseInt(RCForm.getDtDia().substring(3, 5)) - 1, 
					Integer.parseInt(RCForm.getDtDia().substring(0, 2))); //fim da modificação das datas
			int dt = Integer.parseInt(formataData.format(cal.getTime()));
			try{
				int tipo = 0;
				if(RCForm.getTipoColaborador().equals("Motorista"))
					tipo = 1;					
				else if(RCForm.getTipoColaborador().equals("Ajudante"))
					tipo = 2;					
				LinkedList<HeadRelComissaoMotAjud> l = rcn.buscaDadosCabecalhoRelComissao(dt, tipo);
				Iterator it = l.iterator();//buscando os dados do head(cabeçalho do relatório)
				String valorMercado = "";
				String valorRota = "";
				String dtInicioPerido = "";
				while(it.hasNext()){
					HeadRelComissaoMotAjud hrlc = (HeadRelComissaoMotAjud) it.next();
					if(hrlc.getValorMercado() != 0.0){
						valorMercado = String.valueOf(hrlc.getValorMercado());
						dtInicioPerido = String.valueOf(hrlc.getDtInicioPeriodo());
					}
					else
						if(hrlc.getValorRota() != 0.0){
							valorRota = String.valueOf(hrlc.getValorRota());
							dtInicioPerido = String.valueOf(hrlc.getDtInicioPeriodo());
						}
				}
				rcn.deletarRelComissaoTemp();
				LinkedList<RelComissaoMotorista> list = null;
				if(tipo == 1)
					list = RCForm.getListrcmMot();
				else if(tipo == 2)
					list = RCForm.getListrcmAjud();
				if(rcn.inserirRelComissaoTemp(list)){ // true pq foi inserido na commav30temp os registros da linkedlist do select q busca as comissões
					LinkedList<RelComissaoMotorista> listRcm = rcn.buscarRelDiarioOrder(RCForm.getTipoOrderBy(),
																						RCForm.getFormaOrderBy());						
					if(listRcm != null){ //true pq buscar os registros na commav30tmp ordernado
						byte[] buffer = null;
						JREmptyDataSource ED = new JREmptyDataSource();
						JRBeanCollectionDataSource BCD = new JRBeanCollectionDataSource(listRcm);							
						Hashtable ht = new Hashtable();							
						ht.put("comMot", BCD);
						ht.put("mercado", valorMercado.replace(".", ","));					
						ht.put("rota", valorRota.replace(".", ","));
						ht.put("dtInicioPeriodo", dtInicioPerido.substring(6, 8)+"/"+dtInicioPerido.substring(4, 6)+"/"+dtInicioPerido.substring(0, 4));
						ht.put("dtFinalRel", RCForm.getDtDia());			
						ht.put("relMotAjud", RCForm.getTipoColaborador());
						String path = request.getRealPath("");					
						String arq = "RelComissaoDiarioMotAjud.jasper";
						String endereco = path+"\\Relatorio\\"+arq;																
						JasperReport relatorio = (JasperReport) JRLoader.loadObject(endereco);
						JasperPrint impressao = new JasperPrint();
						impressao = JasperFillManager.fillReport(relatorio, ht, ED);							

// JasperViewer jrviewer = new JasperViewer(impressao,true);
// jrviewer.show(); //visualizar o relatório no editor do Java Jasper View
buffer = JasperExportManager.exportReportToPdf(impressao);
if(buffer != null){
response.setContentType(“application/pdf”);
response.setDateHeader(“Expires”, 0);
response.setContentLength(buffer.length);
response.setHeader(“Content-Disposition”,
“inline; filename=”" + “RelatorioDiarioMotAjud” + “”");
OutputStream os = response.getOutputStream();
os.write(buffer);
os.flush();
os.close();
}
rcn.deletarRelComissaoTemp();
}
}
}catch(Exception e){
log.error("RelComissaoAction gerarRelComisDiario getCause(): "+e.getCause());
}
}
else{
if(RCForm.getListrcmAjud() != null){

			}
		}
	}
	
	return null;
}

}

Se vc já tiver criado o arquivo .jasper, é só jogar ele na raiz do seu projeto.

Esse eh o ponto chave…

Já joguei esse arquivo em todas as pastas possiveis dentro do projeto e nada.

deve ser algo com a configuração do netbeans ou sei lá.

[code]
String path = request.getRealPath("");
String arq = “RelComissaoDiarioMotAjud.jasper”;
String endereco = path+"\Relatorio\"+arq;
JasperReport relatorio = (JasperReport) JRLoader.loadObject(endereco);

[code]

sera que naum tem algo parecido com “request.getRealPath(”");" para desktop?

Pessoal, os tutoriais que eu estive olhando falam pra colocar o arquivo .jasper no diretório raizdoprojeto/rel.

Então…

eu resolvi o meu problema utilizando o código.

getClass().getResource("");

olha a gambiarra que eu fiz.

    String[] vetor = getClass().getResource("").toString().split(System.getProperty("file.separator"));
            
String path = System.getProperty("file.separator");

for(int i = 1; i < vetor.length - 2; i++){
    path += vetor[i] + System.getProperty("file.separator");
}

a variável path é o caminho do seu projeto, no meu caso q uso o netbeans o path aponta para a pasta “build” e quando gero o jar e executo o programa o path aponta para a pasta onde o jar esta dentro.

é isso ae que resolveu meu problema.

[]'s

Problema resolvido entuam tah ok!

Até