返回null的java中的Package.getPackage

我在com.abc包中有一些类A,B,C

我在com.pqr包中有一个Class Main

现在我想创建一个先前pacakge(abc)的包对象。

为此,我试过,

Package pkg = Package.getPackage("com.abc"); // This gives me null object in pkg 

但是当我这样做的时候

 Package pkg = A.class.getPackage(); // It works fine 

任何人都可以通知,为什么Package.getPackage(“package-name”)不起作用?

如果当前的ClassLoader已经知道包,则Package.getPackage将仅返回非null值。 尝试这个:

 Package pkg = Package.getPackage("com.abc"); System.out.println(pkg); Class a = A.class; pkg = Package.getPackage("com.abc"); System.out.println(pkg); 

第一个System.out将打印’null’,第二个将打印包名称,因为ClassLoader然后从中加载了一个类。