[quote=brunorota]Olá galera
Eu pesquisei, pesquisei e não entedi =/
Tipo eu jah fiz o relatório no IReport, jah criei o .jasper dele e o .jrxml, ele funcionou normal
Mas eu não sei como eu chamo esse relatório pela minha aplicação
Tipo colocar um evento em algum botão e aparecer o relatório
Como eu chamo o relatório jasper no Java?
Atenciosamente[/quote]
Tem que importar o .JAR do Jasper para sua aplicação, ele contem os métodos que necessita ser implementado…
Ai você manda o resultset e hashmap por parâmetro para o Jrxml que vai gerar o relatório para você.
public void chamRelatório(){
HashMap hashMap = new HashMap();
String sql = "SELECT nomeEClusa FROM eclusas";
try{
Connection conn = ConnectionDB.getConnection();
Statement stm = conn.createStatement();
ResultSet rset = stm.executeQuery(sql);
JRResultSetDataSource ds = new JRResultSetDataSource(rset);
JasperPrint jp = JasperFillManager.fillReport("classic.jrxml", hashMap, ds);
JasperViewer.viewReport(jp, false);
}catch(Exception e){
e.printStackTrace();
}
}
public static void main(String args[]){
RelatorioTeste teste = new RelatorioTeste();
teste.chamRelatório();
}
}
[/code]
o erro
[code]
net.sf.jasperreports.engine.JRException: Error loading object from file : classic.jrxml
at net.sf.jasperreports.engine.util.JRLoader.loadObject(JRLoader.java:92)
at net.sf.jasperreports.engine.JasperFillManager.fillReport(JasperFillManager.java:515)
at Teste.RelatorioTeste.chamRelatório(RelatorioTeste.java:29)
at Teste.RelatorioTeste.main(RelatorioTeste.java:41)
Caused by: java.io.StreamCorruptedException: invalid stream header: 3C3F786D
at java.io.ObjectInputStream.readStreamHeader(ObjectInputStream.java:783)
at java.io.ObjectInputStream.(ObjectInputStream.java:280)
at net.sf.jasperreports.engine.util.JRLoader.loadObject(JRLoader.java:87)
… 3 more[/code]
Verifique seu arquivo jasper, se esta recebendo exatamente os tipos de arquivos que está enviando no java… Esse erro ta estranho, olha a quantidade de campos do relatório e da uma reconferida nessa sintaxe SQL acho que esta errada
Eh eu estou fazendo o relatório com apenas um campo mesmo, é mais para testar sabe, só estou listando o nome das eclusas da minha tabela eclusas, primeiro vou fazer o teste assim pra eu ver como funciona depois eu faço o relatório de verdade
A sql está correta, e são os mesmos campos que tem o relatório que eu criei
java.lang.NullPointerException
at java.io.ObjectInputStream$PeekInputStream.read(ObjectInputStream.java:2266)
at java.io.ObjectInputStream$PeekInputStream.readFully(ObjectInputStream.java:2279)
at java.io.ObjectInputStream$BlockDataInputStream.readShort(ObjectInputStream.java:2750)
at java.io.ObjectInputStream.readStreamHeader(ObjectInputStream.java:780)
at java.io.ObjectInputStream.<init>(ObjectInputStream.java:280)
at net.sf.jasperreports.engine.util.JRLoader.loadObject(JRLoader.java:191)
at net.sf.jasperreports.engine.JasperFillManager.fillReport(JasperFillManager.java:580)
at Teste.RelatorioTeste.chamRelatório(RelatorioTeste.java:35)
at Teste.RelatorioTeste.main(RelatorioTeste.java:47)
O código ficou assim
[code]public class RelatorioTeste {
public void chamRelatório(){
HashMap hashMap = new HashMap();
String sql = "SELECT nomeEclusa FROM eclusas";
try{
Connection conn = ConnectionDB.getConnection();
Statement stm = conn.createStatement();
ResultSet rset = stm.executeQuery(sql);
String caminhoRelatorio= "classic.jasper";
InputStream Caminho = getClass().getResourceAsStream(
"/" + caminhoRelatorio);
JRResultSetDataSource ds = new JRResultSetDataSource(rset);
JasperPrint jp = JasperFillManager.fillReport(Caminho, hashMap, ds);
JasperViewer.viewReport(jp, false);
}catch(Exception e){
e.printStackTrace();
}
}
public static void main(String args[]){
RelatorioTeste teste = new RelatorioTeste();
teste.chamRelatório();
}
}[/code]
e mudando o nome do caminho para TESTE.jasper aconteceu o seguinte erro
java.lang.NullPointerException
at java.io.ObjectInputStream$PeekInputStream.read(ObjectInputStream.java:2266)
at java.io.ObjectInputStream$PeekInputStream.readFully(ObjectInputStream.java:2279)
at java.io.ObjectInputStream$BlockDataInputStream.readShort(ObjectInputStream.java:2750)
at java.io.ObjectInputStream.readStreamHeader(ObjectInputStream.java:780)
at java.io.ObjectInputStream.<init>(ObjectInputStream.java:280)
at net.sf.jasperreports.engine.util.JRLoader.loadObject(JRLoader.java:191)
at net.sf.jasperreports.engine.JasperFillManager.fillReport(JasperFillManager.java:580)
at Teste.RelatorioTeste.chamRelatório(RelatorioTeste.java:35)
at Teste.RelatorioTeste.main(RelatorioTeste.java:47)
java.lang.NullPointerException
at java.io.ObjectInputStream$PeekInputStream.read(ObjectInputStream.java:2266)
at java.io.ObjectInputStream$PeekInputStream.readFully(ObjectInputStream.java:2279)
at java.io.ObjectInputStream$BlockDataInputStream.readShort(ObjectInputStream.java:2750)
at java.io.ObjectInputStream.readStreamHeader(ObjectInputStream.java:780)
at java.io.ObjectInputStream.<init>(ObjectInputStream.java:280)
at net.sf.jasperreports.engine.util.JRLoader.loadObject(JRLoader.java:191)
at net.sf.jasperreports.engine.JasperFillManager.fillReport(JasperFillManager.java:580)
at Teste.RelatorioTeste.chamRelatório(RelatorioTeste.java:35)
at Teste.RelatorioTeste.main(RelatorioTeste.java:47)