Tenho um aplicativo, que quando rodo através do NetBeans, ele gera e abre o relatório (iReport) numa boa. Após criar o Jar, quando clico no botão que dispara o evento que gera o relatório, nada acontece, não dá erro, não trava, simplesmente não acontece nada. Eu sei que o evento está ocorrendo, pq se eu pedir para gerar o relatório do dia e não tiver nada cadastrado no BD, ele me informar que não há registros. Por favor, socorro!!!
Não abre o relatório
12 Respostas
Provavelmente está dando alguma excessão que não está sendo tratada.
Para ter certeza disso execute seu jar no DOS com o seguinte comando:
java -jar Programa.jar
E então vai mostrar o trace do erro.
Abraços
E como é a classe q vc chama para gerar o relatório? Poste o seu código aqui, pois tive um problema parecido e resolvi apenas tratando a excessão, assim pude identificar meu erro.
att.
Mari
Realmente, deu o seguinte erro: “java.io.FileNotFoundException: RelLigacoes.jasper”. O que será?
ahh! Agora sim.
Esse erro indica que o seu arquivo compilado (.jasper) não foi encontrado para geração do relatório. Vc precisa verificar duas coisas:
- Onde está o arquivo.jasper
- Como vc está indicando esse caminho na sua classe…
Posta o seu código aqui, assim fica mais fácil para analisarmos 
att.
Mari
Segue abaixo o código:
public class Relatorio extends Controle{
/** Creates a new instance of Relatorio */
public Relatorio() {
}
public void geraRelatorioDiario(String data_atual) throws JRException, Exception
{
SimpleDateFormat formatter = new SimpleDateFormat("dd/MM/yyyy");
String minha_data = data_atual;
Date date = formatter.parse(minha_data);
java.sql.Date mySqlDate = new java.sql.Date(date.getTime());
Date data = mySqlDate;
conectaBD();
String query = "select empresa, telefone, solicitadopor, autorizadopor, data, hora from Ligacao where ligacao_realizada = true and data = #" + data + "# order by empresa";
registro = comando.executeQuery(query);
if (registro.next())
{
registro = comando.executeQuery(query);
JRResultSetDataSource jrRS = new JRResultSetDataSource(registro);
Map parameters = new HashMap();
JasperPrint jrPrint = JasperFillManager.fillReport("RelLigacoes.jasper", parameters, jrRS);
JasperViewer viewer = new JasperViewer(jrPrint, false);
viewer.setVisible(true);
viewer.setDefaultCloseOperation(JasperViewer.DISPOSE_ON_CLOSE);
}
else
{
JOptionPane.showMessageDialog(null,"Não existe ligação efetuada no dia de hoje!", "Telefonia - Relatório de Ligações", JOptionPane.INFORMATION_MESSAGE);
}
desconectaBD();
}
public void geraRelatorioDiario(String data1, String data2) throws JRException, Exception
{
SimpleDateFormat formatter = new SimpleDateFormat("dd/MM/yyyy");
String minha_data1 = data1;
String minha_data2 = data2;
Date date = formatter.parse(minha_data1);
java.sql.Date mySqlDate = new java.sql.Date(date.getTime());
Date date1 = mySqlDate;
date = formatter.parse(minha_data2);
mySqlDate = new java.sql.Date(date.getTime());
Date date2 = mySqlDate;
conectaBD();
String query = "select empresa, telefone, solicitadopor, autorizadopor, data, hora from Ligacao where ligacao_realizada = true and data between #" + date1 + "# and #" + date2 + "# order by empresa";
registro = comando.executeQuery(query);
if (registro.next())
{
registro = comando.executeQuery(query);
JRResultSetDataSource jrRS = new JRResultSetDataSource(registro);
Map parameters = new HashMap();
JasperFillManager.fillReportToFile("RelLigacoes.jasper", parameters, jrRS);
JasperExportManager.exportReportToPdfFile("RelLigacoes.jrprint");
JasperViewer.viewReport("RelLigacoes.jrprint", false);
}
else
{
JOptionPane.showMessageDialog(null,"Não existem ligações no período especificado!", "Telefonia - Relatório de Ligações", JOptionPane.INFORMATION_MESSAGE);
}
desconectaBD();
}
}
O problema está aqui:
JasperPrint jrPrint = JasperFillManager.fillReport(“RelLigacoes.jasper”, parameters, jrRS);
Além de indicar o nome do arquivo.jasper vc precisa indicar o caminho dele, por exemplo:
JasperPrint jrPrint = JasperFillManager.fillReport("/java/iReport-1.3.1/bin/RelLigacoes.jasper", parameters, jrRS);
tenta aí e me diga se deu certo.
Mari[/quote]
Muito obrigado! Tá funcionando que é uma beleza! Com certeza, este fórum é de enorme valia e eficiência.
ola, estou com o mesmo problema, mas uso o eclipse …
como voce conseguiu adicionar o seu relatorio ao arquivo .jar ??
ja fiz alguns testes, nao sei mais se eh o caminho ou a criacao do meu jar que esta errado que meu relatorio nao executa, da o mesmo erro : “java.io.filenotexception”
sera que alguem pode me ajudar ??
Olá Marcos!
Posta o código da sua classe aqui 
Eu tb uso o Eclipse, quem sabe posso te ajudar.
att.
Mari
eu nao sei aonde estou errando, se eh no codigo ou na hora de criar o meu .jar …
ai vai meu codigo …
package teste;
import java.sql.ResultSet;
import java.util.HashMap;
import javax.swing.JOptionPane;
import net.sf.jasperreports.engine.JRResultSetDataSource;
import net.sf.jasperreports.engine.JasperFillManager;
import net.sf.jasperreports.engine.JasperPrint;
import net.sf.jasperreports.view.JasperViewer;
public class Relatorio_atualiza {
public Relatorio_atualiza(String nume_cpd) {
try {
@SuppressWarnings("unused")
JasperPrint relat = gera_relatorio(nume_cpd);
//JasperViewer.viewReport(relat, false);
} catch (Exception e) {
JOptionPane.showMessageDialog(null , "Erro ao chamar relatório !\n" + e.getMessage() , "Operador" , JOptionPane.ERROR_MESSAGE);
}
}
@SuppressWarnings("unchecked")
public JasperPrint gera_relatorio(String nume_cpd) {
JasperPrint rel = null;
String quadro = null ;
String inscricao = null ;
try {
ResultSet results1 = Conectar.execSQL( " select teste064.descricao, teste080.descricao from teste064, teste080, teste062 where teste062.nuncpd = '"+nume_cpd+"' and teste062.quadro = teste064.codigo and teste062.tipo_inscricao = teste080.situacao ; " );
if ( results1.next() ) {
quadro = results1.getString(1);
inscricao = results1.getString(2);
quadro = quadro.trim();
inscricao = inscricao.trim();
}
} catch (Exception e) {
JOptionPane.showMessageDialog(null , "Erro ao gerar relatório !\n" + e.getMessage() , "Operador" , JOptionPane.ERROR_MESSAGE);
}
try {
ResultSet results = Conectar.execSQL( " select cpf, nome, inscricao, endereco, bairro, cidade, estado, cep, fone, celular, email from teste062 where teste062.nuncpd = '"+nume_cpd+"' ; " ) ;
JRResultSetDataSource jrRS = new JRResultSetDataSource( results );
HashMap map = new HashMap();
map.put("para1",quadro);
map.put("para2",inscricao);
String caminho = "/Atualiza.jasper" ;
rel = JasperFillManager.fillReport( caminho , map, jrRS);
JasperViewer viewer = new JasperViewer(rel, false);
viewer.setVisible(true);
} catch (Exception e) {
JOptionPane.showMessageDialog(null , "Erro ao gerar relatório !\n" + e.getMessage() , "Operador" , JOptionPane.ERROR_MESSAGE);
}
return rel;
}
}
como voce criou o seu .jar ?? pelo eclipse ??
e os relatorios, como voce fez para adicionar ao seu projeto …
porque no meu caso, tenho a workspace “teste” …
dentro dessa pasta criei outra chamada “pacotes”, onde coloco meus relatorios (.jasper), algumas figuras, alem de .jar´s (como driver de conexao com o banco de dados, que funciona, so o relatorio e a figura que nao)
obrigado
continuarei respondendo no tópico:
http://www.portaljava.com/home/modules.php?name=Forums&file=viewtopic&t=39051
ok
mudamos para o outro topico …