Eclipse rcp classloader hell: la clase movida sigue siendo visible en tiempo de compilación pero ya no en tiempo de ejecución

StackOverflow https://stackoverflow.com/questions/1206795

Pregunta

Tengo un problema nuevo y extraño con una aplicación eclipse 3.5 rcp: todo funcionó bien, luego cambié el sistema en ejecución y moví una sola clase de un complemento a un complemento dependiente. No es un gran problema, pero de repente la aplicación se queja con una excepción de clase no encontrada (o NoClassDefFoundError - no sé exactamente pero buscará y editará la publicación ...)

Doblo, triplico, ... verifiqué todo lo que sé y me aseguré de que el manifiesto contenga la dependencia con el número de versión correcto y que el paquete se haya exportado correctamente en el otro complemento. Eclipse jdk no se queja (no hay errores / advertencias del compilador) pero cuando depuro solo hasta el punto en que se crea una instancia de la clase y uso 'CTRL + MAYÚS + I' para inspeccionar la declaración 'New MyClass ()', la información sobre herramientas del inspector sais , que no puede resolver esa clase.

Cualquier ayuda, sugerencia y comentario alentador es muy apreciado.

¿Fue útil?

Solución 2

Resolvió el problema solo por casualidad (y no tengo la menor idea de si se trata de un error o una característica ...):

El proyecto de complemento, donde moví la clase, tenía una estructura de carpetas similar a Maven con src / main / java y src / test / java, ambas carpetas definidas como carpetas de origen.

Simplemente porque quería probar casi todo, cambié esta estructura de nuevo a la estructura de eclipse típica con solo src como la única carpeta de origen.

Y, después de otro 'proyecto limpio', se está ejecutando de nuevo. ¿Extraño ...?

Editar

gracias por la sugerencia, la estructura de la carpeta fue solo un error tipográfico en esta publicación.

Después de mucha más lucha, estoy bastante seguro de que se trata de un problema de eclipse. Después de "resolver" como se indicó anteriormente, al día siguiente la aplicación no pudo cargar otras clases desde el El mismo complemento y creo que, después de reiniciar el entorno de trabajo de Galileo, los problemas desaparecieron.

Otros consejos

También encontré un NoClassDefFoundError en una aplicación Eclipse 3.5 Galileo RCP donde tenía una carpeta src / java en un complemento y necesitaba exportar un paquete para que lo use otro complemento.

La solución para mí resultó ser incluir la carpeta bin como parte de la ruta de clase de tiempo de ejecución. Normalmente solo ha sido necesario incluir el. carpeta.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top