Digamos que una base de código java tiene un paquete llamado "com.example".¿Hay alguna manera de forzar a un cargador de clases a cargar un paquete incluso si no se ha cargado ninguna de sus clases?
En tiempo de ejecución, podemos obtener este paquete llamando
Package p = Package.getPackage("com.example"); //(returns null)
o incluso obtener una lista de todos los paquetes llamando
Packages[] ps = Package.getPackages();
El problema es - si el cargador de clases aún no se ha cargado ningún clase del paquete, no estará disponible para estas llamadas a funciones. Podemos forzar para cargar el paquete por la fuerza de carga de una de las clases del paquete en primer lugar, de esta manera:
this.getClass().getClassLoader().loadClass("com.example.SomeClass");
Package p = Package.getPackage("com.example"); //(returns non-null)
Sin embargo, esto es hacky y requiere saber de antemano el nombre de alguna clase que pertenece a el paquete.
Entonces, la pregunta es: ¿hay alguna forma de obtener una instancia de Paquete por nombre, independientemente de si el ClassLoader ha hecho algo? ¿Son precisas mis suposiciones sobre cómo funcionan los paquetes de clases/paquetes en esta situación?
Cuidado con https://stackoverflow.com/questions/3455267/why-does-class-getpackage-return-the-same-package-for-classes-from-different-pac – Vadzim