Package.getPackage в java, возвращающем null

У меня есть некоторые классы A, B, C в пакете com.abc

У меня есть класс Main в пакете 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 затем загрузил из него класс.