Copilar

2 respostas
couta

e aii....
to com uma dificuldade de achar um caminho para q dpois de copilar esse caminho ache a pasta dentro do jar copilado...
por exemplo...
fiz uma aplicaçao que tem a opçao de imprir to usando o Ireport p montar o relatorio...e para isso tenho q dizer o caminho onde estar o JASPER e onde o pdf sera gerado... fiz o caminho pela minha maquina local por ex. C:/Documents and Settings/coutinhorcs/Desktop/Viatura/Garagem/src/FonteRelatorio/ mais oou menos esse caminho...ele vai la dentro do meu projeto..vai na pasta das classes e entra no pacote onde ira criar o jasper e o pdf....mas eu queria dpois de copilado nao usar esse caminho para poder usar em qlquer outra maquina....sem que eu tenha q levar todo o meu projeto para a outra maquina... queria levar apenas a Lib com as bibliotecas né e o JAR...
alguem pode me ajudar cara??
to um tempao nisso e nao consigo achar um caminho que o jar dpois de copilado reconheca e crie dentro dele mesmo o pdf e abra...
abaixo segue o codigo onde gera o relatorio e esta com o caminho da minha maquina local...
abraço

A DUVIDA É...QUAL CAMINHO EU DEVO USAR NO LUGAR DO "C:/Documents and Settings/coutinhorcs/Desktop/Viatura/Garagem/src/FonteRelatorio/" PARA QUE DENTRO DO PROPRIO JASPER ELE ENCONTRAR O CAMINHO E ABRIR O PDF,pois em outra maquina..ela nao vai achar esse caminho pois é de outra maquina...

public class BeanRelatorio {   
  
    public BeanRelatorio() {   
    }   
  
    public void gerar(String dataIni, String dataFim, String qtdeMissoes) throws JRException , SQLException,   
            ClassNotFoundException, BaflException {   
  
        String relatorio = "relatorioSaida";   
        ConverteDataHora converte = new ConverteDataHora();   
        //dataIni=converte.parseDataIso(dataIni);   
       // dataFim=converte.parseDataIso(dataFim);   
          //      Timestamp data = converte.stringToTimestampCompleto(new Date());   
  
        //String dataIni =  convData.parseDataIso(Inicial) ;   
  
// Pega a data final e soma um dia, para pegar que o pedriodo   
// seja até o último minuto do dia.   
        //String dataFim = convData.somaDia(Final, 1);   
    //String dataFim = convData.parseDataIso(Final);   
  
  
// Na variavel pathJasper ficara o caminho do diretório para   
// os relatórios compilados (.jasper)   
  
  
           
       String pathJasper = "C:/Documents and Settings/coutinhorcs/Desktop/Viatura/Garagem/src/FonteRelatorio/";   
         
      // InputStream pathJasper = getClass().getResourceAsStream("FonteRelatorio");   
      // String pathJasper2 = pathJasper+"";   
  
        /*getServletContext().getRealPath(  
                "/WEB-INF/classes/br/mil/bafl/sic/relatorios/")  
                + "/";  
        */   
  
// A variavel path armazena o caminho real para o contexto   
// isso é util pois o seu web container pode estar instalado em lugares diferentes   
  
  
       String path = "C:/Documents and Settings/coutinhorcs/Desktop/Viatura/Garagem/src/FonteRelatorio/";   
      // InputStream path = getClass().getResourceAsStream("/relatorio");   
       //String path2 = path+"";   
  
        //getServletContext().getRealPath("/");   
  
        try {   
        JasperReport jr =  (JasperReport) JRLoader.loadObject(pathJasper + relatorio + ".jasper");   
        HashMap parametros = new HashMap();   
        parametros.put("dataInicio",dataIni);   
        parametros.put("dataFinal", dataFim);   
        parametros.put("qtdeMissoes", qtdeMissoes);   
        //String contexto = getServletContext().getContextPath();   
        Connection con = SuperDAO.getConnection();   
  
       // InputStream is = getClass().getResourceAsStream("/FonteRelatio/relatorioSaida.jasper");   
  
// Aqui ele cria o relatório   
            JasperPrint impressao = JasperFillManager.fillReport(pathJasper   
                    + relatorio + ".jasper", parametros, con);   
               
  
           // JasperPrint impressao = JasperFillManager.fillReport(is, parametros, con);   
  
// Grava o relatório em disco em pdf   
            JasperExportManager.exportReportToPdfFile(impressao, path  + relatorio + ".pdf");   
            //JasperExportManager.exportReportToHtmlFile(impressao, path + "relatorio/relatorio.html");   
  
// Redireciona para o pdf gerado   
           // response.sendRedirect("relatorio/" + relatorio + ".pdf");//(pathJasper+"relatorio.pdf");   
        //response.sendRedirect("relatorio/relatorio.html");//(pathJasper+"relatorio.pdf");   
  
            String pathRelatorio = path +  relatorio + ".pdf";   
            JasperViewer.viewReport(impressao,false);   
        } catch (Exception e) {   
            e.printStackTrace();   
        }   
    }   
       /* public static void main(String[] args) {  
 
            String dtInicial = "22/01/2010";  
            String dtFinal = "26/01/2010";  
 
        try {  
            new BeanRelatorio().gerar(dtInicial, dtFinal);  
 
        } catch (Exception e) {  
            e.printStackTrace();  
        }  
    }  
        */   
       
  
}  
public class BeanRelatorio {

    public BeanRelatorio() {
	}

    public void gerar(String dataIni, String dataFim, String qtdeMissoes) throws JRException , SQLException,
            ClassNotFoundException, BaflException {

		String relatorio = "relatorioSaida";
        ConverteDataHora converte = new ConverteDataHora();
        //dataIni=converte.parseDataIso(dataIni);
       // dataFim=converte.parseDataIso(dataFim);
          //      Timestamp data = converte.stringToTimestampCompleto(new Date());

        //String dataIni =  convData.parseDataIso(Inicial) ;

// Pega a data final e soma um dia, para pegar que o pedriodo
// seja até o último minuto do dia.
        //String dataFim = convData.somaDia(Final, 1);
    //String dataFim = convData.parseDataIso(Final);


// Na variavel pathJasper ficara o caminho do diretório para
// os relatórios compilados (.jasper)


        
       String pathJasper = "C:/Documents and Settings/coutinhorcs/Desktop/Viatura/Garagem/src/FonteRelatorio/";
      
      // InputStream pathJasper = getClass().getResourceAsStream("FonteRelatorio");
      // String pathJasper2 = pathJasper+"";

		/*getServletContext().getRealPath(
                "/WEB-INF/classes/br/mil/bafl/sic/relatorios/")
                + "/";
		*/

// A variavel path armazena o caminho real para o contexto
// isso é util pois o seu web container pode estar instalado em lugares diferentes


       String path = "C:/Documents and Settings/coutinhorcs/Desktop/Viatura/Garagem/src/FonteRelatorio/";
      // InputStream path = getClass().getResourceAsStream("/relatorio");
       //String path2 = path+"";

		//getServletContext().getRealPath("/");

        try {
        JasperReport jr =  (JasperReport) JRLoader.loadObject(pathJasper + relatorio + ".jasper");
        HashMap parametros = new HashMap();
        parametros.put("dataInicio",dataIni);
        parametros.put("dataFinal", dataFim);
        parametros.put("qtdeMissoes", qtdeMissoes);
        //String contexto = getServletContext().getContextPath();
        Connection con = SuperDAO.getConnection();

       // InputStream is = getClass().getResourceAsStream("/FonteRelatio/relatorioSaida.jasper");

// Aqui ele cria o relatório
            JasperPrint impressao = JasperFillManager.fillReport(pathJasper
                    + relatorio + ".jasper", parametros, con);
             

           // JasperPrint impressao = JasperFillManager.fillReport(is, parametros, con);

// Grava o relatório em disco em pdf
            JasperExportManager.exportReportToPdfFile(impressao, path  + relatorio + ".pdf");
            //JasperExportManager.exportReportToHtmlFile(impressao, path + "relatorio/relatorio.html");

// Redireciona para o pdf gerado
           // response.sendRedirect("relatorio/" + relatorio + ".pdf");//(pathJasper+"relatorio.pdf");
        //response.sendRedirect("relatorio/relatorio.html");//(pathJasper+"relatorio.pdf");

            String pathRelatorio = path +  relatorio + ".pdf";
            JasperViewer.viewReport(impressao,false);
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
       /* public static void main(String[] args) {

            String dtInicial = "22/01/2010";
            String dtFinal = "26/01/2010";

		try {
			new BeanRelatorio().gerar(dtInicial, dtFinal);

		} catch (Exception e) {
			e.printStackTrace();
		}
	}
        */
    

}

2 Respostas

viniciusfaleiro

Cara… ja expliquei pra um pessoal como fazer exatamente isso que vc precisa… da uma procurada nos meus posts… eu tenho q sair agora e num da pra explicar…

R

Bem, eu chamo meu relatório da forma abaixo.

try {
            Connection con = new Conexao().conectar();
            HashMap parametros = new HashMap();
            JasperPrint jp = JasperFillManager.fillReport("./relatorios/clientes.jasper", parametros, con);
            JasperViewer jasperViewer = new JasperViewer(jp, false);
            jasperViewer.setDefaultCloseOperation(JasperViewer.DISPOSE_ON_CLOSE);
            jasperViewer.setTitle("Relatório de Clientes");
            jasperViewer.setVisible(true);
        } catch (Exception e) {
            e.printStackTrace();
        }

Dentro do meu projeto eu crio uma pasta chamada relatorios onde coloco todos eles. Sendo assim se mudar de maquina só tenho que levar a pasta do projeto.

Criado 12 de fevereiro de 2010
Ultima resposta 12 de fev. de 2010
Respostas 2
Participantes 3