Significa que probablemente ha recompilado una clase que dependía de otra clase ya compilada y no compiló la clase dependiente.
Por ejemplo:
public class MyClass {
public int num;
public MyClass() { num = 1; }
}
public class MyDependingClass {
private int foo;
public MyDependingClass(MyClass init) {
foo = init.num;
}
}
Así que vuelva a compilar las dos clases, presumiblemente con la mano (un IDE normalmente actualizar el espacio de trabajo del proyecto para que lo que debe manipularse clases dependiendo).
Y funcionó.
Más tarde usted decide refactorizar MiClase:
public class MyClass {
private int innernum;
public int getNum() {
return innernum;
}
public MyClass() { innernum = 1; }
}
Si compila MiClase y no MyDependingClass, al ejecutar su programa y crear una instancia de MyDependingClass por lo que recibirá su NoSuchFieldError.
La corrección a corto plazo es probablemente para recompilar todas las clases en su área de trabajo, lo que debería mostrar el error.
La solución a largo plazo es utilizar Eclipse o NetBeans u otro IDE que maneje esto por usted.
Es probablemente ayudaría si incluye un seguimiento de pila o simplemente una sugerencia en lo que intentaste hacer – biziclop
¿puedes publicar algún código? – timaschew
Bueno, tengo una clase de calles LuaUserdata que representa un valor Lua Userdata (puedes olvidarte de lua, no está relacionado) esta clase tiene un campo llamado m_metatable, LuaUserdata se extiende por clase 'a', 'a' extendido por 'b' y eventualmente clasifique 'e' por 'Parte'. Cuando intento acceder al campo m_metatable en 'Parte' obtengo este error, que es extraño ya que el campo no se accede una sola vez en las clases a, b, etc. y todas las clases que se extienden 'd' aún pueden acceder al campo . – Tim