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!!!
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:
[code]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();
}
}[/code]
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 …