No netbeans meu relatório esta sendo criado perfeitamente mais ao criar o .jar o arquivo .jrxml nao e copiado e o .jar deixa de criar o meu relatório. Meu código que gera o relatório
public void imprimir(LinkedList lista) throws Exception {
JasperReportreport=JasperCompileManager.compileReport(this.getPathToReportPackage()+"Re_Setor.jrxml");JasperPrintprint=JasperFillManager.fillReport(report,null,newJRBeanCollectionDataSource(lista));JasperExportManager.exportReportToPdfFile(print,"C:/Users/TI/Documents/Relatorio_de_Setor.pdf");Filepdf=newFile("C:/Users/TI/Documents/Relatorio_de_Setor.pdf");try{Desktop.getDesktop().open(pdf);}catch(Exceptionex){ex.printStackTrace();JOptionPane.showMessageDialog(null,"Erro no Desktop: "+ex);}}
ele estava em build\classes\Relatorios.
so que quando eu limpo e construo ele some de la e não e copiado para o .jar
darlan_machado
Por que você não o coloca dentro do próprio projeto? Com isso, você o empacotaria ao gerar o jar e não teria o problema.
J
jeankarlos
então justamente aqui que não consigo buscar se não for nesse diretório build\classes\Relatorios.
como mudo na onde busco esse .jrxml
darlan_machado
Então, quando você dá um limpar e construir, você exclui tudo o que está no build. Logo, o relatório vai pras cucuias.
Agora, você só postou uma parte da coisa:
O método getPathToReportPackage é o que contém o código que precisamos.
J
jeankarlos
entendi minha classe inteira esta asim:
public class RelatorioSetor {
private String path; //Caminho base
privateStringpathToReportPackage;// Caminho para o package onde estão armazenados os relatorios Jarper//Recupera os caminhos para que a classe possa encontrar os relatóriospublicRelatorioSetor(){this.path=this.getClass().getClassLoader().getResource("").getPath();this.pathToReportPackage=this.path+"Relatorios/";System.out.println(path);}//Imprime/gera uma lista de Setorespublicvoidimprimir(LinkedList<Setor>lista)throwsException{JasperReportreport=JasperCompileManager.compileReport(this.getPathToReportPackage()+"Re_Setor.jrxml");JasperPrintprint=JasperFillManager.fillReport(report,null,newJRBeanCollectionDataSource(lista));JasperExportManager.exportReportToPdfFile(print,"C:/Users/TI/Documents/Relatorio_de_Setor.pdf");Filepdf=newFile("C:/Users/TI/Documents/Relatorio_de_Setor.pdf");try{Desktop.getDesktop().open(pdf);}catch(Exceptionex){ex.printStackTrace();JOptionPane.showMessageDialog(null,"Erro no Desktop: "+ex);}}publicStringgetPathToReportPackage(){returnthis.pathToReportPackage;}publicStringgetPath(){returnthis.path;}
darlan_machado
Web ou desktop?
J
jeankarlos
desktop
Solucao aceita
darlan_machado
Então, você pode criar um diretório dentro do diretório src, com o nome “relatorios”, por exemplo e nele inserir o arquivo jasper.
A partir disso, você invoca o arquivo utilizando:
ok essa classe RelatorioSetor que postei ja esta dentro de src/relatorios.
mais esse código eu irei colocar em qual lugar no meu método e teria que apagar algum?
ok irei da uma olhada nesse tutorial.
darlan_machado
Em que parte do relatório você usa o caminho do arquivo do relatório?
veja o link que passei.
J
jeankarlos
li o link que mandou porem fiquei com mais duvida.
você e ele estão fazendo de um jeito e eu tinha feito de outro. vocês estão usando .jasper e no tutorial que eu tinha seguido que foi com que eu consegui fazer o relatório esta falando sobre o .jrxml
darlan_machado
Realmente, não existe apenas um modo de fazer.
O uso do jasper vai evitar que você tenha que recompilar o seu relatório.
De qualquer maneira, você ainda pode seguir o mesmo passo a passo sugerido e utilizar o jrxml.