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 затем загрузил из него класс.