Pessoal, tenho o seguinte problema…
tenho o seguinte pacote
br.cassolato.Relatorios
nesse tem as classes q invocam um arquivo .jasper para eu mostrar o meu relatorio.
no pacote
br.cassolato.Relatorios.RelJasper esta o meu .jasper
queria saber com eu faco a minha invocacao pra ele dentro do meu .jar pra eu colocar o meu .jasper dentro do meu .jar, pois se e passar o caminho( c:/…/br/… ele funciona ).
Sera q alguem pd me ajudar ?
Ratinho,
Vc pode criar um pacote específico para seus arquivos .jasper.
Exemplo: br.cassolato.relatorios.jasper
Depois, na classe onde vc preenche o relatório vc usa o classloader para pegar uma InputStream para seu arquivo .jasper:
InputStream is = this.getClass().getClassLoader().getResourceAsStream("br.cassolato.relatorios.jasper.MeuRelatorio.jasper");
Em seguida pega uma conexão com o banco e usa o método JasperFillManager.fillReport().
JasperPrint jasperPrint = JasperFillManager.fillReport(is, parametros, conexao);
[quote=“Maldito”]Ratinho,
Vc pode criar um pacote específico para seus arquivos .jasper.
Exemplo: br.cassolato.relatorios.jasper
Depois, na classe onde vc preenche o relatório vc usa o classloader para pegar uma InputStream para seu arquivo .jasper:
InputStream is = this.getClass().getClassLoader().getResourceAsStream("br.cassolato.relatorios.jasper.MeuRelatorio.jasper");
Em seguida pega uma conexão com o banco e usa o método JasperFillManager.fillReport().
JasperPrint jasperPrint = JasperFillManager.fillReport(is, parametros, conexao);
[/quote]
kra, eu fiz o seguinte codigo
package br.com.urdcnorte.segUnimed.Relatorios;
import java.io.InputStream;
import java.util.Collection;
import java.util.HashMap;
import java.util.Map;
import javax.swing.JOptionPane;
import net.sf.jasperreports.engine.JasperFillManager;
import net.sf.jasperreports.engine.JasperPrint;
import net.sf.jasperreports.engine.JasperReport;
import net.sf.jasperreports.engine.data.JRBeanCollectionDataSource;
import net.sf.jasperreports.engine.util.JRLoader;
import net.sf.jasperreports.view.JasperViewer;
/**
* Classe que realmente monta o relatorio
* Esta possui um metodo que recebera uma Collection
* Contendo a lista recebida da consulta e entao apresentara
* em um formulario
*/
public class RelPadrao {
/**
* Método responsável por montar o relatório
* Recebe como parametro a Collection Recebida da
* Consulta SQL feita pela repectiva classe invocada
* na acao do menu Relatorios do formulario principal
* */
public void MontaRelatorio( Collection coll ) {
// Pega o endereco do .jasper
String dir = System.getProperty( "user.dir" );
try{
// Manipula os beans da collection recebida para o relatorio
JRBeanCollectionDataSource ds = new JRBeanCollectionDataSource( coll );
// Nome do arquivo .jasper
//File arquivo = new File( dir + "/Relatorio.jasper" );
InputStream is = this.getClass().getClassLoader().getResourceAsStream(
"br.com.urdcnorte.segUnimed.Relatorios.ArqJasper.Relatorio.jasper");
/**
* AQUI JA O is ESTA NULO
* O que sera que esta acontecendo ?
*/
// Parte de configuraçao do Report
//JasperReport jr = (JasperReport) JRLoader.loadObject( arquivo );
// Parametros do Relatorio
Map parametros = new HashMap();
// monta os objetos para Saida para a Tela
//JasperPrint impressao = JasperFillManager.fillReport( jr, parametros, ds );
JasperPrint impressao = JasperFillManager.fillReport( is, parametros, ds );
// Mostra na tela usando o JasperViewer
JasperViewer jrviewer = new JasperViewer( impressao, false );
jrviewer.setVisible(true);
}catch( Exception e ) {
JOptionPane.showMessageDialog( null, "Erro:\n" + e.toString());
e.printStackTrace();
}
}
}
O q sera q ta dando errado em ?