He leído un montón de código equinoccial para esto, pero aún no puedo encontrar una forma no hacky de obtener el cargador de clases para un paquete osgi en la configuración de eclipse equinox. ¿Hay alguno?¿Cómo obtener el cargador de clases para un paquete en equinoccio?
Respuesta
La respuesta corta (sin duda para OSGi 4.1, no estoy seguro de 4.2) es que no puede obtener el cargador de clases de un paquete. Sin embargo, la interfaz Bundle
expone un método loadClass()
y esto le permite escribir un cargador de clases que envuelve la API del paquete y delega a ese método loadClass()
. O puede ahorrar algo de tiempo y usar la clase BundleDelegatingClassLoader
de Spring DM en su lugar.
en código Java normal, se puede obtener el cargador de clases que carga un objeto dado con
object.getClass().getClassLoader();
O incluso
SomeType.class.getClassLoader();
Lo mismo se aplica a Equinox, sólo tiene que utilizar un objeto o tipo que viene del paquete que le interesa.
En OSGi 4.3 se puede usar:
bundle.adapt(BundleWiring.class).getClassLoader()
El cargador de clases de un paquete se puede obtener a través de la interfaz BundleWiring. Aquí un pequeño ejemplo:
Bundle bundle = bundleContext.getBundle();
BundleWiring bundleWiring = bundle.adapt(BundleWiring.class);
ClassLoader classLoader = bundleWiring.getClassLoader();
- 1. ¿Cómo usar javax.tools.ToolProvider desde un cargador de clases personalizado?
- 2. ¿Qué es un cargador de clases aislado en Java?
- 3. lanzado a través del cargador de clases?
- 4. Tutorial del cargador de clases Java
- 5. ¿Cómo calculo los momentos de equinoccio/solsticio?
- 6. ¿Cómo puedo enumerar todas las clases cargadas en un cargador de clases específico?
- 7. ¿Hay alguna manera de forzar a un cargador de clases a cargar un paquete incluso si no se ha cargado ninguna de sus clases?
- 8. ¿Qué cargador de clases usar con Parcel.readHashMap?
- 9. ¿Cuándo y cómo se marca un cargador de clases java para la recolección de basura?
- 10. ¿Es posible instrumentar con clases javassist java core? Clases cargadas por el cargador de clases bootstrap
- 11. Obteniendo todas las clases de un paquete
- 12. ¿Escenario cuando uno puede requerir un cargador de clases personalizado?
- 13. desechando un cargador de clase
- 14. ¿Cómo encontrar qué jarras y en qué orden las carga un cargador de clases?
- 15. android, cómo obtener el nombre del paquete?
- 16. ¿Cómo establecer mi cargador de clases personalizado como predeterminado?
- 17. .dll ya cargado en otro cargador de clases?
- 18. Comportamiento del cargador de clases en Tomcat con múltiples aplicaciones
- 19. ¿Puedo establecer la política del cargador de clases para WebSphere en el archivo ibm-web-bnd.xmi?
- 20. ¿Es posible reemplazar el cargador de un sistema operativo? ¿Alguna forma de obtener el control del cargador?
- 21. ¿La mejor técnica para obtener el contexto del paquete OSGi?
- 22. ¿Cómo puedo obtener el nombre del paquete en android?
- 23. Separación de clases JUnit en un paquete de prueba especial?
- 24. Modo de delegación del cargador de clases Websphere
- 25. ¿Cómo ofuscar solo unas pocas clases o un solo paquete?
- 26. Orden del cargador de clases JBoss - Otro intento de comprenderlo
- 27. ¿Cómo uso JDK6 ToolProvider y JavaCompiler con el cargador de clases de contexto?
- 28. ¿Cómo obtener intellisense para clases personalizadas?
- 29. ¿Cómo se incluyen Xml Docs para una biblioteca de clases en un paquete NuGet?
- 30. ¿Cómo obtener un buen diagrama de clases para clases incorporadas de .net?
Pero entonces tiene un problema de arranque. ¿Cómo se obtiene esa primera instancia? – Geniedesalpages
Si tiene dependencia del otro paquete, puede hacer referencia directamente a la otra clase (SomeType.class) que los cargadores de clase osgi delegan entre los paquetes, por lo que aún procede del otro cargador de clases. Si no tiene una dependencia, necesita obtener el objeto Bundle (usando PackageAdmin) y usar Bundle # loadClass como se menciona en la otra respuesta. –
La carga de la clase J2SE no se ajusta a J2EE. http://stackoverflow.com/questions/34787419/pmd-rule-use-proper-class-loader-explaination – Poornan