NullPointerException calling static Instances

Iniciado por jsahara, 15 Mayo 2016, 14:34 PM

0 Miembros y 1 Visitante están viendo este tema.

jsahara

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.

ivancea96

Asegúrate de no utilizar ningún método que utilice los campos estáticos antes de que se inicialicen.
Por ejemplo:
Código (java) [Seleccionar]
class T{
    public static T t = new T();
    public static String str = new String();
   
    public T(){
        System.out.println(str.length());
    }

    public static void main(String[] args){
        str = "abc";
    }
}


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.

jsahara

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"

+ 1 Oculto(s)

sabes para que sirve static? ese es tu error

ivancea96

Código (java) [Seleccionar]
public class Inicializar {
    public static Persona persona;
    public Inicializar(){
        persona = new Persona("nombre");
    }
}

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.