iReport - Arquivo não encontrado

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.

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)

Olha ai: http://www.guj.com.br/posts/list/222263.java#1138598

@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=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.

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.