Execução de Relatorios

19 respostas
F

Caso alguem possa me ajudar, estou co o seguinte problema…já construir meus relatorios com o jasper e ireports.Estou usando o netbeans, e quando escuto o meu projeto pelo netbeans,ele gera o relatorio normal,sem problema nenhum.Agora quando eu limpo e construo para gerar o .java ele não excuta o relatorio.Todo o meu projeto funciona,menos o relatorio,vc clica no botão pra chamar o relatorio e não acontece nada e dentro do netbeans funciona normal.[RESOLVIDO]

19 Respostas

Vmaia

Olá,
Pode ser que o pacote gerado não esteja com as lib’s (do jasper), e no netbeans funciona pois ele, provavelmente, deve administrar isso.

rdmardegam

Como está a implementação da sua chamada para o relatorio dentro do .java ?

É projeto web ou desktop?

F

Então…eu construo o projeto e na pasta dist , ele gera o arquivo .java e uma pasta LIB com as bibliotecas.
A chamada dele é numa aplicação desktop.

malhuco

Esta com falta de lib’s pro relatório…
ou
Esta com lib’s desatualizadas pro relatório…
ou
esta tentando pegar um caminho do arquivo do relatório que não existe.

Posta o código ai, se não for as libs.

F

Os caminhos estão certos ,pq ele chama o relatorio quando é xecutadopelo netbeans.Ele abre normalmente,testei milhares de vezes.Dentro do netbeans ele funciona que é uma maravilha.Agora depois de compilado é que ele não funciona.

malhuco

Lib’s???

F

então…eu importei as bibliotecas…e quando ele gera o . java na pasta dist,ele gera tb uma pasta lib com todas as bibliotecas que importei.as mesmas bibliotecas que estão no projeto do netebeans quando executo ele.

malhuco

Ele gera um .JAR e não .java

gerou jar??

execute ele por prompt de comando e posta o erro que ele gera ao tentar abrir o relatório.

F

o erro que deu foi o seguinte:

C:\Documents and Settings\Fabiano\Meus documentos\NetBeansProjects\prLivraria10.

0\dist>java -jar prLivraria.jar

Gerando relat¾rio

net.sf.jasperreports.engine.JRException: java.io.FileNotFoundException: C:\Docum

ents and Settings\Fabiano\Meus documentos\NetBeansProjects\prLivraria10.0\dist\s

rc\prlivraria\estoque_minimo.jasper

at net.sf.jasperreports.engine.util.JRLoader.loadObject(JRLoader.java:77

)

at net.sf.jasperreports.engine.JasperFillManager.fillReport(JasperFillMa

nager.java:243)

at prlivraria.RelatorioEstoqueMinimo.geraRelatorio(RelatorioEstoqueMinim

o.java:51)

at prlivraria.frmRelatorios.jButton4ActionPerformed(frmRelatorios.java:2

12)

at prlivraria.frmRelatorios.access$400(frmRelatorios.java:22)

at prlivraria.frmRelatorios$5.actionPerformed(frmRelatorios.java:143)

at javax.swing.AbstractButton.fireActionPerformed(Unknown Source)

at javax.swing.AbstractButton$Handler.actionPerformed(Unknown Source)

at javax.swing.DefaultButtonModel.fireActionPerformed(Unknown Source)

at javax.swing.DefaultButtonModel.setPressed(Unknown Source)

at javax.swing.plaf.basic.BasicButtonListener.mouseReleased(Unknown Sour

ce)

at java.awt.Component.processMouseEvent(Unknown Source)

at javax.swing.JComponent.processMouseEvent(Unknown Source)

at java.awt.Component.processEvent(Unknown Source)

at java.awt.Container.processEvent(Unknown Source)

at java.awt.Component.dispatchEventImpl(Unknown Source)

at java.awt.Container.dispatchEventImpl(Unknown Source)

at java.awt.Component.dispatchEvent(Unknown Source)

at java.awt.LightweightDispatcher.retargetMouseEvent(Unknown Source)

at java.awt.LightweightDispatcher.processMouseEvent(Unknown Source)

at java.awt.LightweightDispatcher.dispatchEvent(Unknown Source)

at java.awt.Container.dispatchEventImpl(Unknown Source)

at java.awt.Window.dispatchEventImpl(Unknown Source)

at java.awt.Component.dispatchEvent(Unknown Source)

at java.awt.EventQueue.dispatchEvent(Unknown Source)

at java.awt.EventDispatchThread.pumpOneEventForFilters(Unknown Source)

at java.awt.EventDispatchThread.pumpEventsForFilter(Unknown Source)

at java.awt.EventDispatchThread.pumpEventsForHierarchy(Unknown Source)

at java.awt.EventDispatchThread.pumpEvents(Unknown Source)

at java.awt.EventDispatchThread.pumpEvents(Unknown Source)

at java.awt.EventDispatchThread.run(Unknown Source)

Caused by: java.io.FileNotFoundException: C:\Documents and Settings\Fabiano\Meus

documentos\NetBeansProjects\prLivraria10.0\dist\src\prlivraria\estoque_minimo.j

asper

 31 more

Finalizado!
malhuco

enterprete o erro : java.io.FileNotFoundException esta claro, certo? O que está acontecendo então, ele não encontro o arquivo “C:\Documents and Settings\Fabiano\Meus documentos\NetBeansProjects\prLivraria10.0\dist\src\prlivraria\estoque_minimo.jasper” por que ele não EXISTE.

reforce oque disse no primeiro post, esta tentando pegar um caminho do arquivo do relatório que não existe.

se estiver com duvidas de como acertar isso, posta o código que você carrega o .JASPER pra mim te dar um help.

F

A classe para chamar o relatorio é essa :
package prlivraria;

import java.sql.Connection;

import java.sql.DriverManager;

import java.sql.ResultSet;

import java.sql.SQLException;

import java.util.HashMap;

import net.sf.jasperreports.engine.JRException;

import net.sf.jasperreports.engine.JasperFillManager;

import net.sf.jasperreports.engine.JasperPrint;

import net.sf.jasperreports.view.JasperViewer;

/**
*

  • @author Fabiano
    */
    public class RelatorioEstoqueMinimo {

    Connection con;
    
    java.sql.Statement stmt;
    
    String caminho = c:/Banco/bdLivraria.mdb;
    
    String url = jdbc:odbc:Driver={Microsoft Access Driver (*.mdb)};DBQ= + caminho;
    
    String usuario = “”, senha = “”;
    
    ResultSet RS;
    
    public void geraRelatorio() {
    
    Connection con = null;
    
    try {
    
    Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
         con = DriverManager.getConnection(url, usuario, senha);//conecta no BD sem ODBC
         //Executa o comando SQL que retorna todos os campos da tabela desejada
         stmt = con.createStatement(ResultSet.TYPE_SCROLL_INSENSITIVE, ResultSet.CONCUR_READ_ONLY);
         RS = stmt.executeQuery("Select * from PRODUTO");
         RS.next();
         System.out.println("Gerando relatório...");
        HashMap<String, Integer> parameterMap =
                 new HashMap <String,  Integer>();
    

//o Nome do parâmetro e o valor é passado ao HashMap
parameterMap.put(“Estoque”, 10);
//pega o caminho físico até o arquivo .jasper

String arquivo = System.getProperty("user.dir")
                + "/src/prlivraria/estoque_minimo.jasper";
//chama fillReport

JasperPrint jp = JasperFillManager.fillReport(arquivo,

parameterMap, con);

//exibe o relatório com viewReport

JasperViewer.viewReport(jp, false);

} catch (SQLException ex) {

ex.printStackTrace();

} catch (ClassNotFoundException ex) {

ex.printStackTrace();

} catch (JRException e) {

e.printStackTrace();

} finally {

try {

if (!con.isClosed()) {

con.close();

}

System.out.println(Finalizado!”);

} catch (SQLException ex) {

}

}
}

Na pasta dist, que ele gera o .jar ,não tinha a pasta src.Se eu copiar a apsta src,que está na pasta de projeto do netbeans para lá ele funciona.Desculpe,se estou perguntando besteira,mas é que não tenho quase nenhuma experiencia com java.Não tem uma maneira de eu gerar um . jar que ele não precise estar dentro desta pasta dist para funcionar?..que eu possa com esse .jar usar o meu projeto em qualquer máquina?

malhuco

leia isso pra continuar postando: http://www.guj.com.br/posts/list/50115.java

pra resolver é só trocar

String arquivo = System.getProperty("user.dir") + "/src/prlivraria/estoque_minimo.jasper";

por

String arquivo = System.getProperty("user.dir") + "/estoque_minimo.jasper";

com isso pra funcionar você deverá ter no diretório DIST: o arquivo .jar e o .jasper.

resolvido… :smiley:

F

Cara…valeu mesmo.Funcionou aqui.Só mais uma duvida pra finalizar.Tem um trecho do codigo que não entendo

new HashMap <String, Integer>(); //o Nome do parâmetro e o valor é passado ao HashMap parameterMap.put("Estoque", 10); //pega o caminho físico até o arquivo .jasper

Como eu não tenho muta experiencia em java eu procurei em varios tutorias como fazer a chamada de relatorio. e o trecho do parameterMap.pu(“Estoque”,10) , eu não entendo.Aonde está 10 , se eu colocar qualquer valor ele funciona e não muda nada.Tentei colocar de outras maneiras que vi em outros tutorias mas não funcionaram.Só dessa maneira.

malhuco

quando ele faz: parameterMap.put(“Estoque”, 10);

esta passando pro relatório pelo parâmetro chamado Estoque o valor 10.

abra o seu relatório e procure o parâmetro chamado
Estoque, ele pode ou não ser usado no relatório, como você pegou isso de terceiros, só olhando o código mesmo.

F

Valeu mesmo pela ajuda cara…muito Obrigado

Resolvido…

guisantogui

Hey, vc baixou o driver pra iReport de ql site?

malhuco

usa as libs que estão na instalação do seu IReport.

ou

http://jasperforge.org//website/ireportwebsite/IR%20Website/ir_download.html?header=project&target=ireport

guisantogui

Consegui, vlw amigo! :smiley:

malhuco

fbenhur:
Valeu mesmo pela ajuda cara…muito Obrigado

Resolvido…

Se o seu tópico foi respondido e você está satisfeito, segue:

  • Pressione o botão de seu primeiro post
  • Acrescente no final do título a tag [RESOLVIDO]
Criado 1 de junho de 2010
Ultima resposta 2 de jun. de 2010
Respostas 19
Participantes 5