¿Por qué se lanza NoClassDefFoundError cuando se llaman a las variables estáticas de la clase?

try {
  MyClass[] myClass = cProxy.getMyClass();
  return "" + myClass[0];
} catch (Exception e) {
  // nothing to do
}
return "" + MyClass.UNKNOWN; <-- NoClassDefFoundError thrown

Obtuve el objeto MyClass de otros objetos, solo me pregunto por qué en lugar de la línea

MyClass[] myClass = cProxy.getMyClass();

¿Se produjo la excepción cuando se llamó a las variables estáticas "MyClass.UNKNOWN" de la clase MyClass?

¿Cuál es el significado profundo de NoClassDefFoundError y ClassNotFoundException? Gracias

Respuesta 1

Aquí hay un extracto de Java Docs sobre ambas excepciones.

NoClassDefFoundError: Se genera si la máquina virtual Java o una instancia de ClassLoader intenta cargar la definición de una clase (como parte de una llamada a método normal o como parte de la creación de una nueva instancia utilizando la nueva expresión) y no se puede encontrar una definición de la clase. La definición de clase buscada existía cuando se compiló la clase actualmente en ejecución, pero la definición ya no se puede encontrar.

ClassNotFoundException : Se lanza cuando una aplicación intenta cargarse en una clase a través de su nombre de cadena usando: • El método forName en la clase Clase. • El método findSystemClass en la clase ClassLoader. • El método loadClass en la clase ClassLoader. pero no se pudo encontrar una definición para la clase con el nombre especificado.

Respuesta: 2

Un problema al que me enfrento con la etiqueta del selector de fecha y hora de struts2.0.14 El problema es que el atributo de formato de fecha y hora de struts2 datetimepicker siempre debe establecerse en el formato del formato de fecha y hora del servidor Tomcat, de lo contrario ...

como titulado. Tengo uso sincronizado para proteger la escritura de subprocesos múltiples. pero quiero saber si necesito agregar volátil para proteger la lectura. (como sabemos, también puedo usar sincronizado para proteger la lectura, pero evitará la lectura ...

Estoy usando una biblioteca de terceros en mi aplicación web en tomcat. El problema es que una clase de esa biblioteca de terceros requiere inicialización con un archivo XML LibraryClass lb = new LibraryClass ("archivo ...

Ok, no lo entiendo. Tengo el siguiente código (y SÍ, sé que no hace nada): paquete com.prim.esaa.gui; import com.jme3.app.SimpleApplication; Sim3DAnimator clase pública se extiende ...