Olá pessoal, estou com problemas no iReport 3.0.0.
Ao tentar visualizar um relatório, sempre tenho a mensagem de ‘arquivo’ ou ‘caminho’ nao encontrado.
segue o codigo:
RelatorioDAOEnsaio.class
public RelatorioDAOEnsaio() {
// TODO Auto-generated constructor stub3
try {
DAOConexao.getConnection();
System.out.println("open");
} catch (SQLException e) {
JOptionPane.showMessageDialog(null, "Ocorreu um erro ao tentar conectar o banco de dados.", "sTGA - Erro com o Banco de Dados", JOptionPane.ERROR_MESSAGE);
} catch (Exception e) {
JOptionPane.showMessageDialog(null, "Ocorreu um erro.\n"+e.getMessage(), "sTGA - Erro", JOptionPane.ERROR_MESSAGE);
}
}
public boolean relEnsaio() throws SQLException, Exception{
conn = DAOConexao.getConnection();
HashMap param = new HashMap();
param.put("HORARIO", "9:00 Horas");
param.put("DATAATUAL", "2010/11/05");
param.put("NOMEPECA", "peça um");
JasperPrint jasperPrint = new JasperPrint();
ObjectInputStream arquivo = new ObjectInputStream(new FileInputStream("./jasper/RelatorioEnsaio.jasper"));
jasperPrint = JasperFillManager.fillReport(arquivo, param, conn);
JasperViewer jasperViewer = new JasperViewer(jasperPrint);
jasperViewer.setVisible(true);
return true;
}
na tela tenho um botão qualquer que chama este método (para testes)
e mesmo passando outros métodos (como a propria string dentro do 1º parametro do fillReport(x,x,x) )
ou usando o java.net.URL (com getPath ou getFile) eu obtive o mesmo resultado.
segue um arquivo de imagem da localização do arquivo jasper.
estou usando o ecplise para a programação, mas até então nunca tive problemas com a ‘captura’ de um arquivo nas minhas aplicações.
Guevara
Novembro 6, 2010, 5:44pm
#2
Eu tive o mesmo problema com um relatório, mas era uma imagem que ele possuia e não estava junto com o relatório na pasta. Seu relatório possui alguma imagem? Se tiver, têm que colocar junto.
não não possui!
o problema é que o eclipse diz que nao acha o arquivo jasper no projeto!
sendo que ele está lá! (como na figura)
wagne23
Novembro 7, 2010, 8:19pm
#4
@wagne23
fiz mais ou menos como você sugeriu lá no outro tópico com a diferença de que tive que usar URL para achar o arquivo dentro do projeto.
Queria saber se não há um jeito de deixar os arquivos de relátorio dentro de um pacote dentro do jar?
TheKill
Novembro 10, 2010, 5:17pm
#6
[quote=samirrolemberg]@wagne23
fiz mais ou menos como você sugeriu lá no outro tópico com a diferença de que tive que usar URL para achar o arquivo dentro do projeto.
Queria saber se não há um jeito de deixar os arquivos de relátorio dentro de um pacote dentro do jar?[/quote]
Sim!
getClass().getResourceAsStream("diretorio/"+relatorio);
no caso eu fiz assim:
[code] jButton.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent e) {
Connection conn = null;
try {
DAOConexao dao = new DAOConexao();
conn = dao.getConnection();
HashMap map = new HashMap();
map.put(“NOME”, “CARGO 0001”);
URL url = getClass().getResource("/relatorios/RelatorioTeste.jasper");
File file = new File(url.getFile());
JasperPrint jp = JasperFillManager.fillReport(file.getPath(), map, conn);
JasperViewer jv = new JasperViewer(jp);
jv.setVisible(true);
} catch (Exception e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
}
}
});[/code]
assim eu consigo chamar o arquivo.
ai tentei criar um JAR pra testa-lo.
e ele não abre o relatorio do mesmo jeito que antes.
não entendi o que você escreveu cara.
TheKill
Novembro 11, 2010, 5:38pm
#8
Faz assim!
JRResultSetDataSource ds = new JRResultSetDataSource(rs);
JasperPrint jp = JasperFillManager.fillReport(getClass().getResourceAsStream("/diretorio/"+arquivo), hm, ds);
eu nao comprendi muito bem os trechos que voce escreveu.
mas, de toda forma, como eu disse anteriormente (acho), eu ja consigo chamar um relátorio.
mas não consigo faze-lo funcionar quando exporto um JAR no eclipse.
alguem sabe como proceder neste caso?
Olha, dê uma olhada no jar criado após o export, pois os arquivos jasper e jrxml precisam estar na mesma estrutura apresentada.
Como assim?
Considerando a estrutura que você criou, você precisa criar uma pasta com o mesmo nome, no diretório onde está o jar e colocar ali os jaspers e jrxmls
[quote=drsmachado]Olha, dê uma olhada no jar criado após o export, pois os arquivos jasper e jrxml precisam estar na mesma estrutura apresentada.
Como assim?
Considerando a estrutura que você criou, você precisa criar uma pasta com o mesmo nome, no diretório onde está o jar e colocar ali os jaspers e jrxmls[/quote]
bem, eu nao sabia que o jrxml precisava ir junto. em todo caso passei a adicionar ele também.
e a pasta criada ali no projeto é como um pacote/pasta comum o projeto.
quando eu criar o jar ela vai ficar dentro do jar (como os arquivos de imagem).
do jeio que está falando ai, só tenho a opção de deixar uma pasta a parte do JAR do projeto?
O meu problema era esse! Tinha esquecido de subir a imagem… Valeu.