Mensagem de erro "java.lang.NullPointerException"

Ola Pessoal, eu estou desenvolvendo um sistema, possui varios frames, porem quando estou num frame e clico no botao para abrir uma outra janela da uma mensagem de erro no prompt do netbeans 5, porem a janelas é aberta normalmente.
Alguem sabe me dar uma dica porque ocorre esse erro:
Desde ja , muito obrigado.

java.lang.NullPointerException
at Work_ADMIN.Frm_Tabela2.buscaDados(Frm_Tabela2.java:189)
at Work_ADMIN.Frm_Tabela2.(Frm_Tabela2.java:108)
at Work_ADMIN.Frm_Cidades.(Frm_Cidades.java:45)
at Work_ADMIN.Frm_Principal.abrirJanelaFrm_Cidades(Frm_Principal.java:915)
at Work_ADMIN.Frm_Principal.jButton3ActionPerformed(Frm_Principal.java:518)
at Work_ADMIN.Frm_Principal.access$300(Frm_Principal.java:9)
at Work_ADMIN.Frm_Principal$4.actionPerformed(Frm_Principal.java:118)
at javax.swing.AbstractButton.fireActionPerformed(AbstractButton.java:1849)
at javax.swing.AbstractButton$Handler.actionPerformed(AbstractButton.java:2169)
at javax.swing.DefaultButtonModel.fireActionPerformed(DefaultButtonModel.java:420)
at javax.swing.DefaultButtonModel.setPressed(DefaultButtonModel.java:258)
at javax.swing.plaf.basic.BasicButtonListener.mouseReleased(BasicButtonListener.java:234)
at java.awt.Component.processMouseEvent(Component.java:5488)
at javax.swing.JComponent.processMouseEvent(JComponent.java:3093)
at java.awt.Component.processEvent(Component.java:5253)
at java.awt.Container.processEvent(Container.java:1966)
at java.awt.Component.dispatchEventImpl(Component.java:3955)
at java.awt.Container.dispatchEventImpl(Container.java:2024)
at java.awt.Component.dispatchEvent(Component.java:3803)
at java.awt.LightweightDispatcher.retargetMouseEvent(Container.java:4212)
at java.awt.LightweightDispatcher.processMouseEvent(Container.java:3892)
at java.awt.LightweightDispatcher.dispatchEvent(Container.java:3822)
at java.awt.Container.dispatchEventImpl(Container.java:2010)
at java.awt.Window.dispatchEventImpl(Window.java:1766)
at java.awt.Component.dispatchEvent(Component.java:3803)
at java.awt.EventQueue.dispatchEvent(EventQueue.java:463)
at java.awt.EventDispatchThread.pumpOneEventForHierarchy(EventDispatchThread.java:234)
at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:163)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:157)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:149)
at java.awt.EventDispatchThread.run(EventDispatchThread.java:110)

Seria melhor se você postasse o código do programa, olhando só a mensagem a única coisa que posso te dizer é que está ocorrendo esse erro porque você está tentando usar um objeto nulo

Rpz esta excecao ocorre qnd vc usa uma variavel q nao esta referenciando algo, ela esta c/ valor NULL, agora tem q saber q variavel ta como NULL. Provavelmente deva ser algo como alguma variavel q esteja pegando os dados p a frame q abre e c isto ta NULL, tem q analisar.

Pessoal segue abaixo o codigo, eu fiz o teste e comprovei que o problema esta neste metodo abaixo, pois preciso por ele 2 vezes no programa.

jScrollPane1.setViewportView(jTable1);

Se voces repararem ele aparece 2 vez no programa, uma vez ele tem a função de mostrar o SELECT = “SELECT ENDERECO FROM TESTE”; e tambem este metodo se encontra no metodo buscaDados(), pois ai ele tem a função de mostrar o SELECT = “SELECT NOM_USUARIO FROM TESTE”;

Alguem tem uma dica como eu poderia acabar com esse erro?

package Work_ADMIN;

import java.sql.Connection;
import java.sql.ResultSet;
import java.sql.Statement;
import java.sql.Connection;
import java.io.;
import java.net.
;
import java.sql.SQLException;
import java.sql.ResultSet.;
import java.sql.
;
import java.awt.event.;
import java.awt.
;
import java.sql.SQLData.;
import java.util.
;
import java.util.Vector;
import javax.swing.*;
import Work_ADMIN.Metodo;

public class Frm_Tabela2 extends javax.swing.JFrame
{
private String URL;
private Connection con;
public ResultSet res;
public Statement st;
public ResultSetMetaData rsmd;

public JButton jButton1;
public JButton jButton2;
public JButton jButton3;
public JLabel jLabel1;
public JTable jTable1;
public JTextField jTextField1;
public JScrollPane jScrollPane1;

Metodo metodo;

public Frm_Tabela2()
{
    setSize(800,500);
    setLocationRelativeTo(null);
   
    jLabel1 = new JLabel();
    jButton2 = new JButton();
    jTextField1 = new JTextField();
    jButton3 = new JButton();

    /*
     *-------------------------------------------------------------------------------- 
     *PAINEL panelTopo
     */
    
    JPanel painelTopo = new JPanel();
    painelTopo.setLayout(new FlowLayout(FlowLayout.LEFT));
    painelTopo.setLayout(null);
    painelTopo.setSize(800,60);

    jLabel1.setText("Localizar");
    jLabel1.setBounds(10,10,60,25);
    jTextField1.setBounds(90,10,550,25);

    jButton1 = new JButton("Localizar");
    jButton1.addActionListener(new java.awt.event.ActionListener() {
        public void actionPerformed(java.awt.event.ActionEvent evt) {
    
            String SELECT = "SELECT NOM_USUARIO FROM TESTE";
          
            conectar(); 
            buscaDados(SELECT);
           
        }
    });
    jButton1.setBounds(660,10,100,25);
     
    painelTopo.add(jLabel1);
    painelTopo.add(jTextField1);
    painelTopo.add(jButton1);
    
/*
 *---------------------------------------------------------------------------
 *PAINEL painelCentro
 */ 
     JPanel painelCentro = new JPanel();
     painelCentro.setLayout(null);
  
    conectar();
    String SELECT = "SELECT ENDERECO FROM TESTE";
    
    
    buscaDados(SELECT);
             
     jScrollPane1 = new JScrollPane();
     jScrollPane1.setBounds(10, 80, 750, 280);
     
     jScrollPane1.setViewportView(jTable1);
     painelCentro.add(jScrollPane1);
    
 /*
  *---------------------------------------------------------------------------
  *Painel panelBaixo
  */
    JPanel painelBaixo = new JPanel();
    painelBaixo.setSize(800,60);
   
    painelBaixo.setLayout(new FlowLayout(FlowLayout.RIGHT));
    
    jButton2.setText("Cadastro Novo");
    jButton3.setText("      Voltar     ");
    
    painelBaixo.add(jButton2);
    painelBaixo.add(jButton3);
    
 /*
 *--------------------------------------------------------------------------------
  */

    Container painelPrincipal = getContentPane();
    painelPrincipal.setLayout(new    BorderLayout());
    
    painelPrincipal.add(painelTopo );
    painelPrincipal.add(painelCentro);
    painelPrincipal.add(painelBaixo,  BorderLayout.SOUTH);
}

/*
 *Metodo para buscar os dados da tabelas e passar para o JTable
 */

 public void buscaDados(String SELECT)
{
    Vector cabecalho;
    Vector linhas;
    

    String SQL = SELECT;
    
    cabecalho  = new Vector();
    linhas     = new Vector();
 
    String ccol1  = "1";

                          
    try
    {
        res        = st.executeQuery(SQL);
        res.next();
        rsmd       = res.getMetaData();
        cabecalho.addElement( ccol1 );
 
        do
        {
            linhas.addElement(proximaLinha(res, rsmd));
        }
        while(res.next());
               
        jTable1 = new JTable(linhas,cabecalho);
        
       
        jScrollPane1.setViewportView(jTable1);
        validate();
        st.close();
    }
    catch(Throwable ex)
    {
        ex.printStackTrace();
    }
}

private Vector proximaLinha(ResultSet rs , ResultSetMetaData rsmd)
{
    Vector linhaAtual = new Vector();

    try
    {
        int     i;
        for(i=1; i<=rsmd.getColumnCount(); ++i)
            switch(rsmd.getColumnType( i ))
            {
                case Types.VARCHAR:
                    linhaAtual.addElement(rs.getString( i )); break;

                case Types.TIMESTAMP:
                     linhaAtual.addElement(rs.getDate( i )); break;
            }
     }       
     catch(Throwable ex) {}
     return linhaAtual;
}
public static void main(String args[]) {
    java.awt.EventQueue.invokeLater(new Runnable() {
        public void run() {
            new Frm_Tabela().setVisible(true);
        }
    });
}

public void conectar()
{
    try
    {
        Class.forName("oracle.jdbc.driver.OracleDriver");
        URL = "jdbc:oracle:thin:HDC/HDC@localhost:1521:OLTP";
        con = DriverManager.getConnection(URL);
        st  = con.createStatement();   
    }
    catch(Throwable ex)
    {
        ex.printStackTrace();
    }
}

}

ao invés de usar o do…while use o while (res.next()) {…}

Acho q eu sei pq ta dando esta excecao. Veja se eh isto q ta acontecendo e diz se resolveu. O problema eh o metodo buscaDados() esta acessando o componente jScrollPane1 antes dele ser instanciado e por isso ta dando a excecao “NullPointerException”, pq ele ainda n esta intanciado, logo esta c/ valor NULL. Para resolver eh so chamar buscaDados() dps do new() do jScrollPane1, e assim pode tirar o outro jScrollPane1.setViewportView(jTable1) do construtor da interface, creio eu q seja isso, teste ai e responda se pegou e n se eskeca de me qualificar.

Vc so vai mexer nesta parte do codigo do construtor do Frm_table2:

Eh assim:

buscaDados(SELECT); 

jScrollPane1 = new JScrollPane(); 
jScrollPane1.setBounds(10, 80, 750, 280); 

jScrollPane1.setViewportView(jTable1); 
painelCentro.add(jScrollPane1); 

Coloque assim: note q buscaDados() so sera chamado dps q jScrollPane1 ser instanciado e a excecao n ocorrera(espero).

jScrollPane1 = new JScrollPane(); 
jScrollPane1.setBounds(10, 80, 750, 280); 
buscaDados(SELECT);
//jScrollPane1.setViewportView(jTable1); (este aqui pode ser retirado)
painelCentro.add(jScrollPane1);