Я не думаю, что можно обнаружить, какие услуги будет предоставлять пакет, потому что это может происходить изнутри кода Java без каких-либо метаданных об этом. Конечно, если вы используете декларативные сервисы, существует файл метаданных. Кроме того, пакет должен импортировать (или предоставить) интерфейс службы, который может дать вам подсказку (но не более).
Вы можете проверить, какие пакеты Java импортирует и экспортирует пакеты, не активируя его.
Если вы хотите установить (не разрешить, не активировать) его, вы можете запросить его. Оболочки Феликса или Равноденствия могут перечислять эти пакеты в конце концов.
Вот соответствующий источник из оболочки Феликса . Он использует сервис PackageAdmin:
public void execute(String s, PrintStream out, PrintStream err)
{
// Get package admin service.
ServiceReference ref = m_context.getServiceReference(
org.osgi.service.packageadmin.PackageAdmin.class.getName());
PackageAdmin pa = (ref == null) ? null :
(PackageAdmin) m_context.getService(ref);
// ...
Bundle bundle = m_context.getBundle( bundleId );
ExportedPackage[] exports = pa.getExportedPackages(bundle);
// ...
}