Java relatorios ireport

galera estou precisando de uma ajuda
com muito custo consigui criar uma classe java que chama os relatorios feito pelo ireport mas só funciona se vc colocar todo o caminho do arquivo.jasper ,a minha class que chama o relatorio.jasper encontra-se no diretorio src e abaixo encontra-se o diretorio relatorio contendo o arquivo.jasper.
tem como colocar somente o diretorio que se encontara o arquivo.jasper sem precisar colocar todo este caminho C:\Documents and Settings\giovanni\Meus documentos\NetBeansProjects\JavaApplication7\src\javaapplication7\relatorio\teste.jasper"); ?

meu codigo baixo:

[code]import java.sql.;
import javax.swing.JOptionPane;
import java.util.HashMap;
import net.sf.jasperreports.engine.
;
import net.sf.jasperreports.engine.util.JRLoader;
import net.sf.jasperreports.view.*;

public class RelatorioProdutos {

private Connection con;
private String relatorio = (“C:\Documents and Settings\giovanni\Meus documentos\NetBeansProjects\JavaApplication7\src\javaapplication7\relatorio\teste.jasper”);

public RelatorioProdutos() {
try{
String url =“jdbc:mysql://localhost:3306/teste”;
String usuario =“root”;
String senha="";

Class.forName(“com.mysql.jdbc.Driver”);
con = DriverManager.getConnection(url,usuario,senha);
Statement st = con.createStatement();
ResultSet rs = st.executeQuery(“SELECT * FROM turma”);
}
catch(Exception event)
{
JOptionPane.showMessageDialog(null,“conexão não estabelecida”+
" verificar se o banco esta ativo",“Mensagem do Programa”,JOptionPane.ERROR_MESSAGE);
}

}
public void exibirRelatorio() throws SQLException{

try {
JasperReport jr = (JasperReport)JRLoader.loadObject(relatorio);
HashMap map = new HashMap();
JasperPrint rel = JasperFillManager.fillReport(jr, map, con);
JasperViewer.viewReport(rel, false);
} catch (JRException erro) {
JOptionPane.showMessageDialog(null, "Erro: " + erro.getMessage());
}
}
public static void main(String [] agrs) throws SQLException{
new RelatorioProdutos().exibirRelatorio();

}

}

[/code]

Eu também já me deparei com esse problema e o que consegui foi criar uma variável com o path da minha aplicação e depois fazer:

byte[] bytes = JasperRunManager.runReportToPdf(realPath + "/reports/Balancete.jasper", parametros, ds);

Vamos aguardar outras soluções dos colegas

Espero ter ajudado,

José Marques

no meu projeto os .jasper ficam no mesmo diretorio que o arquivo .jar da minha aplicação. No fonte, eu coloquei apenas o nome do arquivo .jasper.

Ex:

byte[] bytes = JasperRunManager.runReportToPdf("Balancete.jasper", parametros, ds); 

Vc pode tentar colocar a pasta “relatorio” dentro do src, e chamar assim

byte[] bytes = JasperRunManager.runReportToPdf("relatorio\teste.jasper", parametros, ds); 

Acredito que vá funcionar,

Rodrigo.

No meu projeto os .jasper estão empacotados dentro do .jar. Além disso, estão em outra package, totalmente diferente, então faço assim a chamada:

[code]JasperReport jr = (JasperReport)JRLoader.loadObject(getClass().getResource("/primeirapack/jasper/relatorio/RelatorioFinalizador.jasper"));

JasperPrint impressao = JasperFillManager.fillReport(jr,meusParametros,minhaConexao);[/code]

Onde primeirapack é a primeira package do meu projeto. O .jasper está no caminho mostrado acima, e o fonte que está executando este trecho de código colocado acima está no caminho:

/primeirapack/jasper/threads/MeuFonte.java

Antigamente eu fazia de outra forma, quando eu não empacotava os .jasper. Não lembro certinho o caminho, mas lembro que eu não precisava passar o caminho todo como vc está fazendo. Apenas o caminho A PARTIR da primeira pasta do meu projeto.

Espero ter dado algumas idéias! :lol:

obrigado RenataFA deu tudo certo