NullPointerException

9 respostas
erico_kl

OI
Queria ve se alguem sabe como resolver esse maravilhoso e conhecido erro q ta dando pra mim…
quando eu compilo acusa nullPointerException nos jdbc do postgre

at org.postgresql.jdbc2…
at org.postgresql.jdbc3…
at org.postgresql.jdbc4…

isso eh erro nos driver??
putz… to com esse erro e nao consigo resolver (ah… nao fiz a besteira de deixar um construtor como void, portanto nao se preocupem com esses erros absurdos q nao é…)
vlw…

9 Respostas

peczenyj

Acho improvável.

Null pointer Exception Acontece Quando vc tenta fazer algo assim:

Objeto algumaCoisa = null

algumaCoisa.algumMetodoNaoEstatico();

Assim, sem ver o codigo, ou vc não carregou direito os jars do banco de dados ou esqueceu de verificar alguma c coisa. Tem q dar mais informações sobre o seu problema como o stacktrace completo pra descobrir.

erico_kl

Quando tento rodar pelo runtime q eu fiz (só adicionar registros pra teste) segue esse erro

Exception in thread main java.lang.NullPointerException

at org.postgresql.jdbc2.AbstractJdbc2Statement.replaceProcessing(AbstractJdbc2Statement.java:765)

at org.postgresql.jdbc2.AbstractJdbc2Statement.(AbstractJdbc2Statement.java:131)

at org.postgresql.jdbc3.AbstractJdbc3Statement.(AbstractJdbc3Statement.java:41)

at org.postgresql.jdbc4.AbstractJdbc4Statement.(AbstractJdbc4Statement.java:30)

at org.postgresql.jdbc4.Jdbc4Statement.(Jdbc4Statement.java:30)

at org.postgresql.jdbc4.Jdbc4PreparedStatement.(Jdbc4PreparedStatement.java:23)

at org.postgresql.jdbc4.Jdbc4PreparedStatement.(Jdbc4PreparedStatement.java:18)

at org.postgresql.jdbc4.Jdbc4Connection.prepareStatement(Jdbc4Connection.java:37)

at org.postgresql.jdbc3.AbstractJdbc3Connection.prepareStatement(AbstractJdbc3Connection.java:266)

at org.postgresql.jdbc2.AbstractJdbc2Connection.prepareStatement(AbstractJdbc2Connection.java:188)

at database.control.SQLManager.getPreparedStatement(SQLManager.java:35)

at database.PerfilDAOImpl.add(PerfilDAOImpl.java:25)

at service.PerfilServiceImpl.add(PerfilServiceImpl.java:11)

at runtime.PerfilRuntime.main(PerfilRuntime.java:14)

Quando tento rodar pela tela (swing) criada o erro é esse:

Exception in thread AWT-EventQueue-0 java.lang.NullPointerException

at org.postgresql.jdbc2.AbstractJdbc2Statement.replaceProcessing(AbstractJdbc2Statement.java:765)

at org.postgresql.jdbc2.AbstractJdbc2Statement.(AbstractJdbc2Statement.java:131)

at org.postgresql.jdbc3.AbstractJdbc3Statement.(AbstractJdbc3Statement.java:41)

at org.postgresql.jdbc4.AbstractJdbc4Statement.(AbstractJdbc4Statement.java:30)

at org.postgresql.jdbc4.Jdbc4Statement.(Jdbc4Statement.java:30)

at org.postgresql.jdbc4.Jdbc4PreparedStatement.(Jdbc4PreparedStatement.java:23)

at org.postgresql.jdbc4.Jdbc4PreparedStatement.(Jdbc4PreparedStatement.java:18)

at org.postgresql.jdbc4.Jdbc4Connection.prepareStatement(Jdbc4Connection.java:37)

at org.postgresql.jdbc3.AbstractJdbc3Connection.prepareStatement(AbstractJdbc3Connection.java:266)

at org.postgresql.jdbc2.AbstractJdbc2Connection.prepareStatement(AbstractJdbc2Connection.java:188)

at database.control.SQLManager.getPreparedStatement(SQLManager.java:35)

at database.PerfilDAOImpl.add(PerfilDAOImpl.java:25)

at service.PerfilServiceImpl.add(PerfilServiceImpl.java:11)

at view.JFCadastroPerfis.jb_gravarActionPerformed(JFCadastroPerfis.java:281)

at view.JFCadastroPerfis.access$0(JFCadastroPerfis.java:277)

at view.JFCadastroPerfis$1.actionPerformed(JFCadastroPerfis.java:112)

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 Source)

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)
RDSILVA

Coloca o codigo ai veio…
E debuga para ver as linhas que estão ocorrendo o erro
Assim conseguiremos te ajudar melhor

Abraço

erico_kl

Pessoal, segue os fontes…

peczenyj

Ok, vejamos, o problema está aqui:

String sql;

return new ConnectionManager()
        .getConnection()
        .prepareStatement( 
            getSQL( sql ) 
        );

ou

String sql;

return new ConnectionManager()
        .getConnection()
        .prepareStatement( 
            properties
                .getProperty(
                    ConnectionManager
                        .getDefaultDatabase() + sql
                    )
        );

Agora, percebi que vc programa orientando a printStackTrace.

Faça assim, TEMPORARIAMENTE use este método:

public PreparedStatement getPreparedStatement ( String sql ) {
		try {
			return new ConnectionManager().getConnection().prepareStatement( getSQL( sql ) );
		} catch (NullPointerException npe){
            npe.printStackTrace();
        } catch (SQLException e) {
			e.printStackTrace();			
		}
        return null;
	}

E veja a origem do nullpointerexception. Estou com muita fome pra investigar.

erico_kl

Com o printStackTrace no NullPointerException o erro é esse:

java.lang.NullPointerException

at org.postgresql.jdbc2.AbstractJdbc2Statement.replaceProcessing(AbstractJdbc2Statement.java:765)

at org.postgresql.jdbc2.AbstractJdbc2Statement.(AbstractJdbc2Statement.java:131)

at org.postgresql.jdbc3.AbstractJdbc3Statement.(AbstractJdbc3Statement.java:41)

at org.postgresql.jdbc4.AbstractJdbc4Statement.(AbstractJdbc4Statement.java:30)

at org.postgresql.jdbc4.Jdbc4Statement.(Jdbc4Statement.java:30)

at org.postgresql.jdbc4.Jdbc4PreparedStatement.(Jdbc4PreparedStatement.java:23)

at org.postgresql.jdbc4.Jdbc4PreparedStatement.(Jdbc4PreparedStatement.java:18)

at org.postgresql.jdbc4.Jdbc4Connection.prepareStatement(Jdbc4Connection.java:37)

at org.postgresql.jdbc3.AbstractJdbc3Connection.prepareStatement(AbstractJdbc3Connection.java:266)

at org.postgresql.jdbc2.AbstractJdbc2Connection.prepareStatement(AbstractJdbc2Connection.java:188)

at database.control.SQLManager.getPreparedStatement(SQLManager.java:35)

at database.PerfilDAOImpl.add(PerfilDAOImpl.java:25)

at service.PerfilServiceImpl.add(PerfilServiceImpl.java:11)

at runtime.PerfilRuntime.main(PerfilRuntime.java:13)

Exception in thread main java.lang.NullPointerException

at database.PerfilDAOImpl.add(PerfilDAOImpl.java:27)

at service.PerfilServiceImpl.add(PerfilServiceImpl.java:11)

at runtime.PerfilRuntime.main(PerfilRuntime.java:13)
Felagund
at database.PerfilDAOImpl.add(PerfilDAOImpl.java:25)

veja a linha 25 da tua classe PerfilDAOImpl, é ali que ele lança o NullPointer.

[]'s

erico_kl

o problema é aqui:

public Perfil add (Perfil perfil) {

    	
    	PreparedStatement ppst1 = new SQLManager().getPreparedStatement(GET_NEXT_VALUE);
        try {
		ResultSet rs1 = ppst1.executeQuery();
		if( rs1.next() ) {
			perfil.setCodigo( rs1.getInt( 1 ));    
		
		}
		else {
			throw new RuntimeException ("Erro ao acessar a sequência do perfil");
		}
        } catch (SQLException e) {
		e.printStackTrace();
            return null;
	}

na linha

PreparedStatement ppst1 = new SQLManager().getPreparedStatement(GET_NEXT_VALUE);

qual é o problema nela?

Felagund

erico_kl:
o problema é aqui:

public Perfil add (Perfil perfil) {

    	
    	PreparedStatement ppst1 = new SQLManager().getPreparedStatement(GET_NEXT_VALUE);
        try {
		ResultSet rs1 = ppst1.executeQuery();
		if( rs1.next() ) {
			perfil.setCodigo( rs1.getInt( 1 ));    
		
		}
		else {
			throw new RuntimeException ("Erro ao acessar a sequência do perfil");
		}
        } catch (SQLException e) {
		e.printStackTrace();
            return null;
	}

na linha

PreparedStatement ppst1 = new SQLManager().getPreparedStatement(GET_NEXT_VALUE);

qual é o problema nela?

Verifique na sua Classe SQLManager no metodo getPreparedStatment se a Connection que vc usa não é nulla.

Criado 1 de agosto de 2008
Ultima resposta 7 de ago. de 2008
Respostas 9
Participantes 4