Creé un paquete en Eclipse y usé el enlace "Iniciar el Framework" para la pestaña "Descripción general". He creado una interfaz (TestService) en mi paquete, y un código que debería generar un proxy para él (en Helper). Yo llamo a este código en el activador del paquete, y sale:¿Cómo se crea/inicializa Javassist ClassPool dentro de un OSGi Bundle?
Caused by: javassist.NotFoundException: com.test.services.TestService
at javassist.ClassPool.get(ClassPool.java:436)
at com.test.services.Helper.get(Helper.java:46)
Se lanza a la derecha en la primera ClassPool.get():
ClassPool pool = ClassPool.getDefault();
CtClass result = pool.get(TestService.class.getName());
...
TestService es público y en el mismo paquete, y Bundle, como el Ayudante, que genera la Excepción. Obviamente, no es lo suficientemente bueno para hacer "ClassPool.getDefault()". Entonces, ¿qué debo hacer para que ClassPool vea las clases dentro del paquete? ¿Debo importar mis propios paquetes?
Supongo que el paquete javassist en sí mismo necesitaría visibilidad de las clases que está pidiendo que cargue. Lamentablemente, no sé cómo javassist busca clases. ¿Puedes decir qué cargador de clases usar, o solo tiene una conjetura aleatoria? ¿Puede configurarse con objetos reales de "Clase", o insiste en los nombres de clase proporcionados como cadenas? –
Estoy empezando con Javassist, así que no estoy seguro, pero lo veré esta noche y te responderé. Pero, sospecho que ya has señalado ese problema; OSGi limita los paquetes que un Bundle puede ver, por lo que podría ser suficiente para agregar mi propio paquete en el "paquete de importación" del Paquete de Javassist. –