Exception in thread "main" java.lang.NullPointerException

eae galera…

seguinte, eu to desnvolvendo uma aplicação aqui, com algumas classes, simulando uma biblioteca, pra estudo mesmo, e me deparei com um problema estranho. ta dando erro no momento de execução.

Exception in thread “main” java.lang.NullPointerException
at appBiblioteca.Acervo.adicionaPublicacao(Acervo.java:17)
at appBiblioteca.Biblioteca.teste(Biblioteca.java:40)
at appBiblioteca.Biblioteca.main(Biblioteca.java:59)
Java Result: 1

esse erro ai…

no metodo main so tenho uma chamada pro metodo de teste, que eh esse aqui…

[code] public void teste()
{
vteditora = new Vector();
acervo = new Acervo();

  vteditora.add(new Editora("Pearson","São Paulo"));
  vteditora.add(new Editora("Abril","São Paulo"));

  acervo.adicionaPublicacao(new Revista(10, "Fulano", "superInteressante", 60, 1, vteditora.get(1)));

}

[/code]

a linha 17 da classe acervo é esse metodo aqui…

  public void adicionaPublicacao(Publicacao p)
    {
      vtpublicacao.add(p);
    }

publicacao é uma classe abstrata com 3 subclasses, livro, revista e monografia…
vteditora é um Vector de objetos da classe editora, que tem esses dois atributos ai… nome e local…
a sintaxe do que eu to tentando escrever esta certo, pq naum apresenta erro…
mas naum sei pq ta dando esse erro ai…

se precisarem saber de mais alguma coisa é so falar…

por favor pessoal… daum um help ai…

vlw

Cara, o teu vtpublicacao não foi criado, por isso ao tentar usá-lo dá erro!

Isso é Java ME?

Se não for, pq está usando a classe Vector?

mas eu chamo o construtor…

quando instancio o Acervo…

dentro do contrutor eu instancio o Vector

  public void Acervo()
    {
      this.vtpublicacao = new Vector();
    }

isso naum funciona???

Vini…

não é Java Me naum… é so uma aplicação Java, do netbeans…

eu to usando Vector por ser mais simplis…
naum precisar controlar muita coisa…

pq?? pode dar problema???

Não pode dar problema não, é que ao invés de se usar Vector usa-se uma das implementações de List, só por isso!!!

Posta o teu código todo, daí fica mais fácil!

Não, é porque o Vector é uma classe velha, e é desaconselhada desde o Java 1.2.

No lugar dele, use o ArrayList. O uso dele é praticamente igual ao do Vector. Mas ele não tem métodos duplicados (como add e addElement) e não é sincronizado:

Por exemplo, esse seu mesmo código com Arraylist fica assim:

[code]public void teste()
{
vteditora = new ArrayList();
acervo = new Acervo();

vteditora.add(new Editora(“Pearson”,“São Paulo”));
vteditora.add(new Editora(“Abril”,“São Paulo”));

acervo.adicionaPublicacao(new Revista(10, “Fulano”, “superInteressante”, 60, 1, vteditora.get(1)));
} [/code]

E a variável vtEditora deve ser declarada assim:

List<Editora> vtEditora = null;

Legal Vini, vou dar uma olhada nesse ArrayList

sobre postar o codigo todo, é um projetinho com 7 classes… ficaria muito grande… o que acham??

mas fui testar o que o thiago me disse, sobre o Vector naum estar instanciado e funcionou…
so coloquei uma linha instanciando o Vector e funcionou…

  public void teste()
    {
      vteditora = new Vector();
      acervo = new Acervo();
      acervo.setVtpublicacao(new Vector());

      vteditora.add(new Editora("Pearson","São Paulo"));
      vteditora.add(new Editora("Abril","São Paulo"));

      acervo.adicionaPublicacao(new Revista(10, "Fulano", "superInteressante", 60, 1, vteditora.get(1)));
      acervo.adicionaPublicacao(new Livro("123456","Beltrano","Programando em Java",350,1,vteditora.get(1)));


    }

mas eu naum entendi pq… pq eu faço isso no metodo construtor da classe Acervo…

vcs sabem me dizer pq???

[quote=rbcneto]mas eu chamo o construtor…

quando instancio o Acervo…

dentro do contrutor eu instancio o Vector

  public void Acervo()
    {
      this.vtpublicacao = new Vector();
    }

isso naum funciona???[/quote]

Não vai funcionar pq vc criou um método e n/ao um construtor. Construtores não tem tipo de retorno. Basta retirar o void.

  public Acervo()
    {
      this.vtpublicacao = new Vector();
    }

puts…

eh verdade…

que falha a minha…

valew…

como eu termino esse post?