Package.getPackage in java 返回 null

2022-09-02 13:05:27

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

我有一个类主在包 com.pqr

现在我想创建一个上一个 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”) 不起作用?


答案 1

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

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

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


答案 2