Erro com Relatorio Ireport

Bom dia, estou com uma duvida quanto a classe para chamar o relatorio, criei os relatorios no plugin do Ireport no NetBeans, criou beleza, criei a classe para chamar o relatorio e ela não apresenta nenhum erro, só que quando chamo no botão ela apresenta um erro, vou postar aki minha classe e logo após o erro que ela apresenta.

package com.br.relatorios;

import com.br.acessobd.AcessoBD;
import java.sql.SQLException;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import java.util.HashMap;
import java.util.Map;
import java.util.logging.Level;
import java.util.logging.Logger;
import javax.swing.JOptionPane;
import net.sf.jasperreports.engine.JRException;
import net.sf.jasperreports.engine.JRResultSetDataSource;
import net.sf.jasperreports.engine.JasperCompileManager;
import net.sf.jasperreports.engine.JasperFillManager;
import net.sf.jasperreports.engine.JasperPrint;
import net.sf.jasperreports.engine.JasperReport;
import net.sf.jasperreports.engine.design.JasperDesign;
import net.sf.jasperreports.engine.xml.JRXmlLoader;
import net.sf.jasperreports.view.JasperViewer;

/**
 *
 * @author Douglas
 */
public class Rela {

    private Connection con;
    private AcessoBD acessoBD = new AcessoBD();
    PreparedStatement ps;
    ResultSet rs;
    private static final String url = "jdbc:mysql://localhost/banco_ac";
    private static final String driver = "com.mysql.jdbc.Driver";
    private static final String login = "root";
    private static final String pwd = "123";
    private String sql = "select * from clientes";

    public Rela() {
    try{
        con = acessoBD.conectar();
        ps = con.prepareStatement(sql);
        rs = ps.executeQuery();

        JRResultSetDataSource jrRS = new JRResultSetDataSource(rs);
        JasperPrint jasperPrint = JasperFillManager.fillReport(
                "com.br.relatorios\rel_cli.jasper", new HashMap(), jrRS);
        JasperViewer.viewReport(jasperPrint);
    }
    catch(Exception erro){
             JOptionPane.showMessageDialog(null, "deu erro =" + erro);
    }
}
}

Vou e chamo essa classe por um Botão na Aplicação, na hora que ele chama apresenta esse erro na tela:

deu erro =net.sf.jasperreports.engine.JRException: java.io.FileNotFoundException: com.br.relariosel_cli.jasper

Alguem pode me ajudar disendo o que aconteceu e como se resolve ou se tem algum outro erro na classe ?
Desde ja obrigado.

Camarada, o arquivo com.br.relariosel_cli.jasper não está no local que deveria (ou o nome dele está diferente na chamada). Como o nome está aqui

JasperPrint jasperPrint = JasperFillManager.fillReport(  
                "com.br.relatorios\rel_cli.jasper", new HashMap(), jrRS);

acredito que não esteja na pasta raiz do projeto

[quote=drsmachado]Camarada, o arquivo com.br.relariosel_cli.jasper não está no local que deveria (ou o nome dele está diferente na chamada). Como o nome está aqui

JasperPrint jasperPrint = JasperFillManager.fillReport(  
                "com.br.relatorios\rel_cli.jasper", new HashMap(), jrRS);

acredito que não esteja na pasta raiz do projeto[/quote]
De feto o erro está dando porque ele não está achando o arquivo

O arquivo ta dentro do projeto/src/relatorios/arquivo.jasper

Eu tenho que colocar de que maneira pra ele achar ?

cara , quando vc copila seu relátorio ,veja no Cosole de Sáida, o caminhu que ele esta gerando.

Ele diz que está nesse diretorio:
C:\Users\Douglas\Documents\Projetos Net\Estoque_t2ti\src\com\br\relatorios\relatorio.jasper

Só que na hora que eu coloco

String arquivoJasper = "C:\Users\Douglas\Documents\Projetos Net\Estoque_t2ti\src\com\br\relatorios\relatorio.jasper"; // ele diz que é ilegal escape character JasperPrint jasperPrint = JasperFillManager.fillReport(arquivoJasper,parametros, jrRS); JasperViewer.viewReport(jasperPrint);

Fica com erro na linhas String arquivoJasper.

Não tenho como testar, mas terá de passar

...
"/relatorios/nome_do_arquivo.jasper"

[quote=JavaPB]Ele diz que está nesse diretorio:
C:\Users\Douglas\Documents\Projetos Net\Estoque_t2ti\src\com\br\relatorios\relatorio.jasper

Só que na hora que eu coloco

 String arquivoJasper = "C:\Users\Douglas\Documents\Projetos Net\Estoque_t2ti\src\com\br\relatorios\relatorio.jasper"; // ele diz que é ilegal escape character
        JasperPrint jasperPrint = JasperFillManager.fillReport(arquivoJasper,parametros, jrRS);
        JasperViewer.viewReport(jasperPrint);
        [/code]

Fica com erro na linhas String arquivoJasper.[/quote]

Então, um pouco de básico de Strings:

Quando você coloca uma "\" o java entende que o próximo caractere será um caractere de escape.
#Maqueporraehessa?
Um caractere de escape, dentro de uma String, diz que ali haverá algo específico, como pular uma linha, tabular, etc.
[code]
String a = "A\nB";
System.out.print(a);
//note que não é println
[/code]
A saída será [code]
A
B

Como a estrutura de diretórios, invariavelmente, é lida assim

"C:\Users\Douglas\Documents\Projetos Net\Estoque_t2ti\src\com\br\relatorios\relatorio.jasper"

e \U, \P não são caracteres de escape, ele lança a exception.
Solução?

"C:\\Users\\Douglas\\Documents\\Projetos Net\\Estoque_t2ti\\src\\com\\br\\relatorios\\relatorio.jasper"

\ escapa a barra e, o caminho é lido normalmente…

Cara continua dando o mesmo erro, da uma olhada ai no meu código possa ser que algo errado, é a primeira vez que faço essa classe.

eu to chaamando a classe pelo botão dessa maneira:

new relatorios.Rela();

ta certo a forma de chamar ?

Ah, por favor, evite passar o caminho absoluto do arquivo, isso te limita muito. Faça o seguinte, leia sobre a classe File, há algumas propriedades de localização de arquivos e diretórios bem funcionais.
Será mais fácil, caso precise colocar o projeto ou mesmo fazê-lo rodar em outro computador (com outro SO, por exemplo)

vou tentar aki

continua dando o mesmo erro do começo =/
MEsmo assim muito obrigado pessoal ;D

Só uma pergunta, qual o nome do arquivo?
Tenta o seguinte, com a classe File, localizar o mesmo, se achar (e não lançar exception), pega o AbsolutePath e passa ele como parâmetro para o relatório.

O nome do arquivo que o Ireport cria é relatorio.jasper

Cara, na minha aplicação eu faço dessa forma vê se vc entende!

[code]
public class RelatorioCliente {

static Connection connection;
ResultSet rs = null;   


public RelatorioCliente(String codigoImprCliente) {    
	/* Efetua a conexao a base de dados e coleta os valores da base de dados armazenando-os  
   em um array para ser futuramente utilizado */  

	RelatorioClienteTO relatorioClienteTO = new RelatorioClienteTO();

	try {   
		  Class.forName("org.apache.derby.jdbc.ClientDriver"); // O sun.jdbc.odbc.JdbcOdbcDriver significa que seria usado um banco access
	      String url = "jdbc:derby://localhost:1527/BancoBar;create=false";// esta string carrega o nome da fonte de dados
	      connection = DriverManager.getConnection(url,"vitor"," ");// aqui  efetuada conex�o passando -se a fonte de dados e o login e senha do banco, que neste caso n�sso existem.
	      System.out.println("Conexão estabelecida"); // exibida uma mensagem informando que a conex�o foi efetuada

		PreparedStatement pstm = connection.prepareStatement( "select * from tb_Clientes where CodigoImprCliente = ?");

		pstm.setString(1,codigoImprCliente);

		rs = pstm.executeQuery();

		if(rs.next()) {   
			
			relatorioClienteTO.setCodigoImprCliente(rs.getString("codigoImprCliente"));
			relatorioClienteTO.setNomeCLi(rs.getString("nomeCLi"));
			relatorioClienteTO.setTelefoneCli(rs.getString("telefoneCli"));
			relatorioClienteTO.setEnderecoCli(rs.getString("enderecoCli"));
		}   
	}   
	catch (Exception e) {   
		System.err.println("Problemas apresentados na operacao de conexao");   
		e.printStackTrace();   
	}   

	/* Inicio do bloco que ira gerar nossos relatorios e 3ª parte */  
	try {

		JRBeanCollectionDataSource ds = null;
		JasperPrint print = null;

		//Verifica se existe no minimo uma proposta a ser impressar 
		List<RelatorioClienteTO > listaRelatorio = new ArrayList<RelatorioClienteTO>();

		listaRelatorio.add(relatorioClienteTO);

		ds = new JRBeanCollectionDataSource(listaRelatorio);

		URL  url = getClass().getResource("/relatorios/cliente_BarBalada.jasper");

		JasperReport relatorioJasper = (JasperReport) JRLoader.loadObject(url);

		print = JasperFillManager.fillReport(relatorioJasper, null , ds);

		JasperViewer.viewReport(print,null,"Bar Balada", null);
		
	} catch (JRException e) {
		e.printStackTrace();
	}        

}

}[/code]

em seguida na outra tela com o Botão Imprimir eu chamo ela

[code] private void btnCodigoImpressaoActionPerformed(java.awt.event.ActionEvent evt) {

	RelatorioCliente  relatorio = new  RelatorioCliente (txtCodigoImprCliente.getText());
	
}[/code]