Aplicação de Relatorio não aceita execução

8 respostas
W

Bom dia caros amigos,

Estou precisando muito de uma ajuda. Configurei o iReport corretamente e testei o banco de dados. Mas quando vou fazer a aplicação no netbeans 6.9.1. ocorre um erro. Abaixo segue o código:

PUBLIC CONNECTION DENTRO DA CLASSE FACADE.JAVA

public Connection getConnection()
    {
        try{
               Class.forName ("oracle.jdbc.driver.OracleDriver");
               //String Driver = "jdbc:oracle:thin:@127.0.0.1:1521:xe";
               //Connection con = DriverManager.getConnection(driver, "igm", "igm");
               return con;
            } catch (Exception e) {
                e.printStackTrace();
            }
                return null;
    }

CLASSE MAPATRAB.JAVA

package laboratorioac;

import java.sql.Connection;
import java.util.Map;
import net.sf.jasperreports.engine.JasperExportManager;
import net.sf.jasperreports.engine.JasperFillManager;
import net.sf.jasperreports.engine.JasperPrint;
import net.sf.jasperreports.view.JasperViewer;

/**
 *
 * @author Elcio
 */
public class Mapatrab extends javax.swing.JFrame {

    private static class Hashmap {

        public Hashmap() {
        }
    }

    /** Creates new form Mapatrab */
    public Mapatrab() {
        initComponents();

    }

private void visualisarActionPerformed(java.awt.event.ActionEvent evt) {                                           
        // TODO add your handling code here:
        try{
            Connection con = new Facade().getConnection();
            Hashmap parametros = new Hashmap();
            JasperPrint jp = JasperFillManager.fillReport("./jasper/Mapatrab.jasper", (Map) parametros, con);
            JasperViewer jrv = new JasperViewer (jp);
            jrv.setVisible(true);
        }   catch (Exception e) {
            e.printStackTrace();
        }
}                                          

    private void pdfActionPerformed(java.awt.event.ActionEvent evt) {                                    
        // TODO add your handling code here:
        try{
            Connection con = new Facade().getConnection();
            Hashmap parametros = new Hashmap();
            JasperPrint jp = JasperFillManager.fillReport("./jasper/Mapatrab.jasper", (Map) parametros, con);
            JasperExportManager.exportReportToPdfFile(jp, "./Mapatrab.pdf");
        }   catch (Exception e) {
            e.printStackTrace();
        }
    }                                   

    private void htmlActionPerformed(java.awt.event.ActionEvent evt) {                                     
        // TODO add your handling code here:
        try{
            Connection con = new Facade().getConnection();
            Hashmap parametros = new Hashmap();
            JasperPrint jp = JasperFillManager.fillReport("./jasper/Mapatrab.jasper", (Map) parametros, con);
            JasperExportManager.exportReportToHtmlFile(jp, "./Mapatrab.pdf");
        }   catch (Exception e) {
            e.printStackTrace();
        }
    }                                    

    /**
    * @param args the command line arguments
    */
    public static void main(String args[]) {
        java.awt.EventQueue.invokeLater(new Runnable() {
            public void run() {
                new Mapatrab().setVisible(true);
            }
        });
    }

    // Variables declaration - do not modify                     
    private javax.swing.JButton html;
    private javax.swing.JLabel jLabel1;
    private javax.swing.JPanel jPanel1;
    private javax.swing.JPanel jPanel2;
    private javax.swing.JPanel jPanel3;
    private javax.swing.JButton pdf;
    private javax.swing.JButton visualisar;
    // End of variables declaration 
}

MENSAGEM DE ERRO DO NETBEANS

run:
Conexao realizada com exito.
Facade sql = Select * from Login where UPPER(Nome_Usuario) = 'ELCIO'
O tamanho da tela é: 1280 pixels de largura por 800 pixels de altura.
java.lang.ClassCastException: laboratorioac.Mapatrab$Hashmap cannot be cast to java.util.Map
at laboratorioac.Mapatrab.visualisarActionPerformed(Mapatrab.java:180)
at laboratorioac.Mapatrab.access$000(Mapatrab.java:25)
at laboratorioac.Mapatrab$1.actionPerformed(Mapatrab.java:112)
at javax.swing.AbstractButton.fireActionPerformed(AbstractButton.java:1995)
at javax.swing.AbstractButton$Handler.actionPerformed(AbstractButton.java:2318)
at javax.swing.DefaultButtonModel.fireActionPerformed(DefaultButtonModel.java:387)
at javax.swing.DefaultButtonModel.setPressed(DefaultButtonModel.java:242)
at javax.swing.plaf.basic.BasicButtonListener.mouseReleased(BasicButtonListener.java:236)
at java.awt.Component.processMouseEvent(Component.java:6267)
at javax.swing.JComponent.processMouseEvent(JComponent.java:3267)
at java.awt.Component.processEvent(Component.java:6032)
at java.awt.Container.processEvent(Container.java:2041)
at java.awt.Component.dispatchEventImpl(Component.java:4630)
at java.awt.Container.dispatchEventImpl(Container.java:2099)
at java.awt.Component.dispatchEvent(Component.java:4460)
at java.awt.LightweightDispatcher.retargetMouseEvent(Container.java:4577)
at java.awt.LightweightDispatcher.processMouseEvent(Container.java:4238)
at java.awt.LightweightDispatcher.dispatchEvent(Container.java:4168)
at java.awt.Container.dispatchEventImpl(Container.java:2085)
at java.awt.Window.dispatchEventImpl(Window.java:2478)
at java.awt.Component.dispatchEvent(Component.java:4460)
at java.awt.EventQueue.dispatchEvent(EventQueue.java:599)
at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:269)
at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:184)
at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:174)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:169)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:161)
at java.awt.EventDispatchThread.run(EventDispatchThread.java:122)
CONSTRUÍDO COM SUCESSO (tempo total: 5 minutos 26 segundos)

Desde já agradeço muito a colaboração de todos,

Elcio

8 Respostas

Polverini

tenta usar assim

Map parametros = new Hashmap();
W

Bom dia Polverini,

Agradeço muito a sua atenção e dedicação aos amigos do GUJ. Vou fazer a alteração da linha do código e testar para ver se dá certo.

Em relação ao nosso grande amigo Google, o que mais fiz foi pesquisar sobre o assunto. Mas infelizmente não achei, por isso coloquei a dúvida aqui ok.

Muito obrigado e que você tenha um ótimo dia e uma ótima semana.

Um abraço,

Elcio

C

Os parâmetros devem ser informados através de objetos da classe java.util.HashMap

private void visualisarActionPerformed(java.awt.event.ActionEvent evt) {                                             
         // TODO add your handling code here:  
         try{  
             Connection con = new Facade().getConnection();  
             java.util.HashMap parametros = new java.util.HashMap();  
             JasperPrint jp = JasperFillManager.fillReport("./jasper/Mapatrab.jasper", parametros, con);  
             JasperViewer jrv = new JasperViewer (jp);  
             jrv.setVisible(true);  
         }   catch (Exception e) {  
             e.printStackTrace();  
         }  
 }

Abraços,
Claudio
T2Ti.com
Curso de Java Gratuito

W

Boa tarde Cláudio,

Muito obrigado por responder o tópico, mas infelizmente ainda está ocorrendo erro. Veja a linha abaixo:

JasperPrint jp = JasperFillManager.fillReport("./jasper/Mapatrab.jasper", parametros, con);
public class Mapatrab extends javax.swing.JFrame {
visualisarActionPerformed(evt);

Mensagem de erro do Netbeans:

run:

Conexao realizada com exito.

Facade sql = Select * from Login where UPPER(Nome_Usuario) = ELCIO

O tamanho da tela é: 1280 pixels de largura por 800 pixels de altura.

java.lang.NullPointerException

at net.sf.jasperreports.engine.fill.JRFiller.fillReport(JRFiller.java:63)

at net.sf.jasperreports.engine.JasperFillManager.fillReport(JasperFillManager.java:402)

at net.sf.jasperreports.engine.JasperFillManager.fillReport(JasperFillManager.java:234)

at laboratorioac.Mapatrab.visualisarActionPerformed(Mapatrab.java:175)

at laboratorioac.Mapatrab.access$000(Mapatrab.java:24)

at laboratorioac.Mapatrab$1.actionPerformed(Mapatrab.java:107)

at javax.swing.AbstractButton.fireActionPerformed(AbstractButton.java:1995)

at javax.swing.AbstractButton$Handler.actionPerformed(AbstractButton.java:2318)

at javax.swing.DefaultButtonModel.fireActionPerformed(DefaultButtonModel.java:387)

at javax.swing.DefaultButtonModel.setPressed(DefaultButtonModel.java:242)

at javax.swing.plaf.basic.BasicButtonListener.mouseReleased(BasicButtonListener.java:236)

at java.awt.Component.processMouseEvent(Component.java:6267)

at javax.swing.JComponent.processMouseEvent(JComponent.java:3267)

at java.awt.Component.processEvent(Component.java:6032)

at java.awt.Container.processEvent(Container.java:2041)

at java.awt.Component.dispatchEventImpl(Component.java:4630)

at java.awt.Container.dispatchEventImpl(Container.java:2099)

at java.awt.Component.dispatchEvent(Component.java:4460)

at java.awt.LightweightDispatcher.retargetMouseEvent(Container.java:4577)

at java.awt.LightweightDispatcher.processMouseEvent(Container.java:4238)

at java.awt.LightweightDispatcher.dispatchEvent(Container.java:4168)

at java.awt.Container.dispatchEventImpl(Container.java:2085)

at java.awt.Window.dispatchEventImpl(Window.java:2478)

at java.awt.Component.dispatchEvent(Component.java:4460)

at java.awt.EventQueue.dispatchEvent(EventQueue.java:599)

at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:269)

at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:184)

at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:174)

at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:169)

at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:161)

at java.awt.EventDispatchThread.run(EventDispatchThread.java:122)

Desde já agradeço,

Elcio

C

Perceba que agora o erro é outro.

A exceção java.lang.NullPointerException ocorre quando você utiliza um objeto que ainda não foi instanciado.

Verifique o método que retorna a conexão com o banco de dados.

A melhor forma de descobrir onde está o erro é debugando a aplicação.

Abraços
Cláudio.
T2Ti.com
Curso Java Gratuito

duodecimo

Elcio,

Vc pode verificar qual objeto está com valor NULL.

Eu apostaria no resultado da query (se for isso, vc deve testar com uma query que garantidamente não resulte vazia, i.e., tente SELECT * FROM login, ou SELECT * FROM login where UPPER(nome_usuario) LIKE ‘%ELCIO%’). Isso depende do banco, da query no iReport, etc, mas creio que por enquanto o que está dando errado fica por aí …

O parametro deve estar ok agora.

W

Bom dia Senhores,

Como não estou em casa, estou em uma Inclusão Digital Pública e assim que chegar em casa testo e retorno a resposta para os senhores

Desde já agradeço,

Elcio

W

Duó,

Essa verificação é para ser feita dentro do netbeans, dentro do Oracle ou fazer essa verificação dentro do iReport

Desde já agradeço,

Elcio

Criado 5 de outubro de 2011
Ultima resposta 6 de out. de 2011
Respostas 8
Participantes 4