Java: проверка наличия пакета (с использованием его имени) ... - PullRequest
3 голосов
/ 29 июля 2011

Я хотел бы проверить, известен ли конкретный пакет текущему загрузчику классов или системе.Package.getPackage (String name), кажется, возвращает ноль, поэтому я застрял.ClassLoader не содержит методов, которые делают то же самое, поэтому я застрял ...

Я бы не хотел загружать класс в пакете для проверки, если он присутствует, несомненно, есть лучший способ.

Любые указатели будут оценены.

Ответы [ 2 ]

4 голосов
/ 29 июля 2011

Package.getPackage(String name) - правильный инструмент для работы.Убедитесь, что вы

  1. правильно набрали имя пакета
  2. Попробуйте Package.getPackages(), чтобы увидеть, что доступно
  3. Убедитесь, что загрузчики классов совпадают - проверьте, например,getClass().getPackage(), а затем Package.getPackage(String name)

Метод ищет пакет только в текущем загрузчике классов (или в системном загрузчике классов, если текущий загрузчик классов равен нулю).Если ни один класс в пакете не загружен в текущий загрузчик классов, пакет не будет представлен.

1 голос
/ 29 июля 2011

Нет простого способа получить информацию о существовании пакета, если только класс не был загружен из этого пакета. Package.getPackage работает, только если класс из названного пакета был загружен.

Ваши варианты:

  1. Загрузить класс или создать экземпляр класса из пакета.
  2. Найдите путь к классу и проверьте все банки / каталоги в пути к классам.

2-ая опция может потерпеть неудачу, если код также использует загрузчики классов url.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...