假设一个java代码库有一个名为“com.example”的包。如果类加载器还没有加载任何 -有没有办法强制类加载器加载一个包,即使它们的类没有被加载?
在运行时,我们可以通过调用
Packages[] ps = Package.getPackages();
的问题是通过调用
Package p = Package.getPackage("com.example"); //(returns null)
甚至得到所有包的列表得到这个包这些函数调用将无法使用它。我们可以迫使它先在包中的一个类加载包通过压装,像这样:
this.getClass().getClassLoader().loadClass("com.example.SomeClass");
Package p = Package.getPackage("com.example"); //(returns non-null)
然而,这是哈克,并需要提前知道一些类的名称属于包裹。
所以问题是 - 有没有办法通过名称获取Package实例,无论ClassLoader是否做了什么?我对这种情况下类加载/包装似乎如何工作的假设是否准确?
谨防https://stackoverflow.com/questions/3455267/why-does-class-getpackage-return-the-same-package-for-classes-from-different-pac的 – Vadzim 2017-11-28 20:38:53