Foro de elhacker.net

Programación => Java => Mensaje iniciado por: jsahara en 15 Mayo 2016, 14:34 pm



Título: NullPointerException calling static Instances
Publicado por: jsahara en 15 Mayo 2016, 14:34 pm
Buenos días,
Tengo un problema con un código java swing que he implementado para el trabajo,
las versiones anteriores del código funcionan para todos los clientes.
He sacado una versión nueva(7) del código y esta versión funciona para la mayoría de clientes, pero en dos de ellos ni se abre la interfaz, me sale una excepción de NullPointerException cuando llamo a las variables estáticas.
En los clientes donde no funciona de versión 7, si vuelvo a poner una versión anterior todo funciona bien.
La verdad no se que pasa, si el error está en el código de la versión 7 o en otra cosa.
mi IDE es Netbeans.
Gracias.


Título: Re: NullPointerException calling static Instances
Publicado por: ivancea96 en 15 Mayo 2016, 14:45 pm
Asegúrate de no utilizar ningún método que utilice los campos estáticos antes de que se inicialicen.
Por ejemplo:
Código
  1. class T{
  2.    public static T t = new T();
  3.    public static String str = new String();
  4.  
  5.    public T(){
  6.        System.out.println(str.length());
  7.    }
  8.  
  9.    public static void main(String[] args){
  10.        str = "abc";
  11.    }
  12. }

Ahí, primero se inicializa 't', y en su constructor trata de utilizar un método de 'str', que es null.

No sé si es tu caso, pero sin más datos, es lo que se me ocurre.


Título: Re: NullPointerException calling static Instances
Publicado por: jsahara en 15 Mayo 2016, 14:54 pm
Muchas gracias por la respuesta,
Mi código es muy grande y no lo puedo publicar aquí, dejo este ejemplo.
Cómo he mencionado en a pregunta, mi código funciona en la mayoría de clientes(en 7 clientes funciona y en dos no funciona), por lo que descarto que que las variables estáticas estén vacías.
Todos los clientes tiene  instalado Windows 7 64  bits y java 8.

package javaapplication1;
public class Persona {
private String nombre;
public Persona(String nombre) {
this.nombre = nombre;
}
public String getNombre() {
return nombre;
}
public void setNombre(String nombre) {
this.nombre = nombre;
}
}
//////////////////////////////////////////////////////////////////////////////////
package javaapplication1;
public class Inicializar {
public static Persona persona;
public Inicializar(){
persona = new Persona("nombre");
}
}
////////////////////////////////////////////////////////////////////////
package javaapplication1;
public class JavaApplication1 {
public static void main(String[] args) {
Inicializar inicializar = new Inicializar();
try{
String nombre = Inicializar.persona.getNombre();
}catch(Exception e){
System.out.println("Error "+e);
}
}
}

y de salida imprime solo: "Error NullPointerExeption"


Título: Re: NullPointerException calling static Instances
Publicado por: + 1 Oculto(s) en 16 Mayo 2016, 17:20 pm
sabes para que sirve static? ese es tu error


Título: Re: NullPointerException calling static Instances
Publicado por: ivancea96 en 16 Mayo 2016, 17:53 pm
Código
  1. public class Inicializar {
  2.    public static Persona persona;
  3.    public Inicializar(){
  4.        persona = new Persona("nombre");
  5.    }
  6. }
Es extraño que un método no estático sirva para inicializar un campo estático. Si el código es tal como lo tienes ahí, lo más correcto sería que Inicializar fuera static.
Si el código tiene más cosas dentro de inicializar, pues ya depende de cómo sea.