Problemas básicos com NullPointerException e Interfaces [ex Para os bons!]

14 respostas
narinha

Estou fazendo um projeto simples e dá o seginte erro.

the method getPeca( ) is undefined for the type itens venda

package persistencia;

import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.Vector;

import beans.ItensCompra;
import beans.Pecas;
import beans.Compras;

import excecoes.ContatoNaoExisteException;

public class PersistenciaItensCompra {
	
	
		
		static PreparedStatement   stmt;
						
//		==============================================
		public Object buscar(Object obj) throws ContatoNaoExisteException
		{
			ItensCompra itenscompra = (ItensCompra) obj;
			
			java.sql.ResultSet   rs; 
			
			try {
				stmt = PersistenciaConexao.conexao.prepareStatement
				("select * from tbitenscompra where codigo=? and codigo=?");
				stmt.setInt(1, itenscompra.getPeca().getCodigo());
				stmt.setInt(2, itenscompra.getCompra().getCodigo());
				rs = stmt.executeQuery();
				if (rs.first())
				{	    	
					itenscompra.setPeca  		    ((Pecas)rs.getObject("codigo"));
					itenscompra.setCompra           ((Compras)rs.getObject("codigo"));
					itenscompra.setQuantidade    	(rs.getInt("quantidade"));
					itenscompra.setValorUnitario    (rs.getFloat("valorunitario")); 
					
					return itenscompra;			    
				}
				else
					throw new ContatoNaoExisteException("O itenscompra " + itenscompra.getPeca().getCodigo() +
					" não está cadastrado");
				
			} catch (SQLException e) {
				
				e.printStackTrace();
				return null;
			}		
		}
//		==============================================
		public void gravar(Object obj) 
		{			
			ItensCompra itenscompra = (ItensCompra) obj;
			try {
				stmt = PersistenciaConexao.conexao
				.prepareStatement("insert into tbitenscompra(codigo, codigo," +
						" quantidade, valorunitario)" + 
				"values(null,null,?,?)");
				
				stmt.setInt    (1, itenscompra.getQuantidade());
				stmt.setFloat  (2, itenscompra.getValorUnitario());		
				
				stmt.execute();
				
			} catch (Exception e) {
				e.printStackTrace();
			}		
		}
//		==========================================================================		
		public void excluir(Object obj) 
		{
			ItensCompra itenscompra = (ItensCompra) obj;
			try {
				
				stmt = PersistenciaConexao.conexao
				.prepareStatement("delete from tbitenscompra where codigo=?");
				
				stmt.setInt(1, itenscompra.getPeca().getCodigo());
				stmt.setInt(2,itenscompra.getCompra().getCodigo());
				stmt.execute();
				
			} catch (Exception e) {
				e.printStackTrace();
			}
		}	
//		==========================================================================
		
		public void alterar(Object obj)	{
			try {
				
				ItensCompra itenscompra = (ItensCompra) obj;
				
				stmt = PersistenciaConexao.conexao
				.prepareStatement("update tbitenscompra set quantidade=?, valorunitario=? where codigo=?");
				
				stmt.setInt    (1,itenscompra.getQuantidade());
				stmt.setFloat  (2,itenscompra.getValorUnitario());
				
				stmt.setInt    (3, itenscompra.getCompra().getCodigo());
				stmt.setInt    (4,itenscompra.getPeca().getCodigo());
				stmt.execute();
				
			} catch (Exception e) {
				e.printStackTrace();
			}
		}	
//		==========================================================================
		
		public Vector buscarTudo(){
			
			ResultSet         rs;
			
			Vector<ItensCompra> itenscompra = new Vector<ItensCompra>();
			
			try {
				stmt = PersistenciaConexao.conexao.prepareStatement
				("select * from tbitenscompra");
				rs = stmt.executeQuery();
				while (rs.next())
				{
					ItensCompra itc = new ItensCompra();
					
					itc.setCompra        ((Compras)rs.getObject("codigo"));
					itc.setPeca          ((Pecas)rs.getObject("codigo"));
					itc.setQuantidade    (rs.getInt("quantidade"));
					itc.setValorUnitario (rs.getFloat("valorunitario"));
					
					
					itenscompra.add(itc);
				}
				return itenscompra;
				
			} catch (SQLException e) {					
				e.printStackTrace();
				return null;
			}			
			
		}
		public static void main(String[] args) {
			new PersistenciaItensCompra();
		}
}

Sei que o código é grande mas assim fica mais fácil de me ajudarem.

14 Respostas

wamarra

Onde vc criou o método getPeca()?

narinha

Aqui não está certo?

package beans;

public class ItensCompra {
//atributos
	
	private Compras compra;
	private int quantidade;
	private float valorUnitario;
	
//metodos
	public Compras getCompra() {
		return compra;
	}
	public void setCompra(Compras compra) {
		this.compra = compra;
	}
	
	public int getQuantidade() {
		return quantidade;
	}
	public void setQuantidade(int quantidade) {
		this.quantidade = quantidade;
	}
	public float getValorUnitario() {
		return valorUnitario;
	}
	public void setValorUnitario(float valorUnitario) {
		this.valorUnitario = valorUnitario;
	}
	public Pecas getPeca() {

		return null;
	}
	
	
}
ViniGodoy

Dá para destacar a linha do erro?

By the way, não use Vector, use List.
http://www.guj.com.br/posts/list/71926.java#378301

ksi

Por que vc usa um getPeca() retornando sempre null?
vi em várias partes do código “getPeca().getCodigo()”, não olhei o código inteiro, mas tenho certeza se vc não contornou isso, isso aí sempre vai dar null pointer exception.

ViniGodoy

Se tudo está “certo demais”, tente também ver se o seu projeto está sendo compilado direito, se o seu servidor está mesmo usando as últimas versões dos arquivos. Talvez seja só questão de fazer um “clean” geral.

narinha

Bom agora eu declarei na classe itensCompra

private Pecas peca;
public Pecas getPeca() {

		return peca;
	}

Está certo?

narinha

Oi ... agora não deu mais erro mas estou com um outro erro :

The type Percistencia cannot be a superinterface of PercistenciaCliente; a superinterface must be an interface
package persistencia;
import interfaces.Persistencia;

import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.Vector;

import beans.Cliente;
import excecoes.ContatoNaoExisteException;

public class PersistenciaCliente implements Persistencia{

    static PreparedStatement   stmt;
	 
	public PersistenciaCliente() {

	}
//==============================================


	public void gravar(Object obj) 
	{
		
		Cliente cliente = (Cliente) obj;
		try {
		   	   	stmt = PersistenciaConexao.conexao
			    .prepareStatement("insert into tbcliente(nome, endereco, rg, cpf, sexo, datanascimento, fone) values(?,?,?,?,?,?,?)");
		   	      	System.out.println("Chegou no banco");   	
				   stmt.setString  (1, cliente.getNome());
				   stmt.setString  (2, cliente.getEndereço());
				   stmt.setString  (3, cliente.getRG());
				   stmt.setString  (4, cliente.getCPF());
				   stmt.setString  (5, cliente.getSexo());
				   stmt.setString  (6, cliente.getDataNascimento());
				   stmt.setString  (7, cliente.getFone());
				   System.out.println("Passou do banco");
				   stmt.execute();
				   System.out.println("Executou o banco");
  		
		} catch (Exception e) {
			e.printStackTrace();
		}
		
	}

//	==========================================================================
	
	
	public Object buscar(Object obj) throws ContatoNaoExisteException
	{
		Cliente cliente = (Cliente) obj;
		
       java.sql.ResultSet   rs; 
   	
       try {
			stmt = PersistenciaConexao.conexao.prepareStatement
			              ("select * from tbcliente where codigo=?");
			stmt.setInt(1, cliente.getCodigo());
			rs = stmt.executeQuery();
		    if (rs.first())
		    {
		    	
		    	cliente.setCodigo  		    (rs.getInt("codigo"));
		    	cliente.setNome    			(rs.getString("nome"));
		    	cliente.setEndereço    	 	(rs.getString("endereco"));
		    	cliente.setRG          		(rs.getString("rg"));
		    	cliente.setCPF         		(rs.getString("cpf"));	    
		    	cliente.setSexo         	(rs.getString("sexo"));
		    	cliente.setDataNascimento 	(rs.getString("datanascimento"));
		    	cliente.setFone          	(rs.getString("fone"));
		    				    	
			    return cliente;			    
		     }
		    else
		       throw new ContatoNaoExisteException("O cliente " + cliente.getCodigo() + " não está cadastrado");
		    
		    
		} catch (SQLException e) {

			e.printStackTrace();
			return null;
		}
		
		
	}
//==============================================
	
	
	
	public void alterar(Object obj)	{
		try {
			
			Cliente cliente = (Cliente) obj;
		
		 	   stmt = PersistenciaConexao.conexao
			    .prepareStatement("update tbcliente set nome=?, endereco=?, rg=?, cpf=?,sexo=?,  datanascimento=?, fone=? where codigo=?");
			   
		 	   stmt.setString  (1, cliente.getNome());
			   stmt.setString  (2, cliente.getEndereço());
			   stmt.setString  (3, cliente.getRG());
			   stmt.setString  (4, cliente.getCPF());
			   stmt.setString  (5, cliente.getSexo());
			   stmt.setString  (6, cliente.getDataNascimento());
			   stmt.setString  (7, cliente.getFone());
			   			   
			   stmt.setInt     (8, cliente.getCodigo());
			   stmt.execute();
		 		   
		} catch (Exception e) {
			e.printStackTrace();
		}
	}
	
	
	
	
//================================================
	
	public void excluir(Object obj) 
	{
		Cliente cliente = (Cliente) obj;
		try {
				
			     stmt = PersistenciaConexao.conexao
			    .prepareStatement("delete from tbcliente where codigo=?");
			   
			   stmt.setInt(1, cliente.getCodigo());
			   stmt.execute();
	
		} catch (Exception e) {
			e.printStackTrace();
		}
	}	
//==========================================================================
	
	
	public Vector buscarTudo(){
		
		     ResultSet         rs;
		     
		     Vector<Cliente> cliente = new Vector<Cliente>();
		        
		     try {
					stmt = PersistenciaConexao.conexao.prepareStatement
					             ("select * from tbcliente");
				    rs = stmt.executeQuery();
				    while (rs.next())
				    {
				    	Cliente cli = new Cliente();
				       	
				    	cli.setCodigo        (rs.getInt("codigo"));
				    	cli.setNome          (rs.getString("nome"));
				    	cli.setEndereço      (rs.getString("endereco"));
				    	cli.setRG            (rs.getString("rg"));
				    	cli.setCPF           (rs.getString("cpf"));
				    	cli.setSexo          (rs.getString("sexo"));
				    	cli.setDataNascimento(rs.getString("datanascimento"));
				    	cli.setFone          (rs.getString("fone"));
			   								
				    	cliente.add(cli);
				    }
				    return cliente;
				    
				} catch (SQLException e) {					
					e.printStackTrace();
					return null;
				}		
	}	
}
Ironlynx

Narinha, pelo erro, vc TEM certeza que vc declarou a classe Persistencia como interface???
E é Persistencia,Persistencia,Persistencia…

narinha

Sim tenho certeza a minha classe está assim:

package interfaces;

import excecoes.ContatoNaoExisteException;
 
public class Persistencia {
	void    gravar(Object obj);
	Object  buscar(Object obj) throws ContatoNaoExisteException;
	void    excluir (Object obj);
	void    alterar (Object obj);
}
//O Vetor Vector  buscaTudo(Class classe);
Ironlynx

Sim tenho certeza a minha classe está assim:

:shock: :shock: :shock:
Narinha!!!
Vc não pode implementar uma classe!(*)
http://br.geocities.com/vanessasabino/java/j2se-interfaces.htm

(*)Implementar como uma interface(implements …), óbvio!

narinha

assim

package interfaces;

import excecoes.ContatoNaoExisteException;

public interface Percistencia 
{
		void    gravar(Object obj);
		Object  buscar(Object obj) throws ContatoNaoExisteException;
		void    excluir (Object obj);
		void    alterar (Object obj);
	}
//	O Vetor Vector  buscaTudo(Class classe);
narinha

Sumiu todos os erros agora só tem 15 warnings rsrsrsrs!

Olá pessoal

Agora estou com o seguinte warning

The assigment to variable codigo has no efect .

package beans;

public class ItensCompra {
//atributos
	
	private Compras compra;
	private int quantidade;
	private float valorUnitario;
	private Pecas codigo;
	
//metodos
	public Compras getCompra() {
		return compra;
	}
	public void setCompra(Compras compra) {
		this.compra = compra;
	}
	
	public int getQuantidade() {
		return quantidade;
	}
	public void setQuantidade(int quantidade) {
		this.quantidade = quantidade;
	}
	public float getValorUnitario() {
		return valorUnitario;
	}
	public void setValorUnitario(float valorUnitario) {
		this.valorUnitario = valorUnitario;
	}
	public Pecas getPeca() {

		return codigo;
	}
	public void setPeca(Pecas pecas) {
		this.codigo = codigo;
	}
	
	
}
O erro está na linha de código:
public void setPeca(Pecas pecas) {
		this.codigo = codigo;
	}

Não esta correto?

peczenyj

public void setPeca(Pecas pecas) { this.codigo = codigo; }

Bom, o método recebe ‘pecas’ e vc quer atribuir ‘codigo’…

não seria melhor fazer

public void setPeca(Pecas codigo) { this.codigo = codigo; }

narinha

OK é isso mesmo. brigadooooooo.

Criado 29 de novembro de 2007
Ultima resposta 30 de nov. de 2007
Respostas 14
Participantes 6