Я пытаюсь найти набор имен пакетов во всех модулях OSGi, используя метод findEntries() BundleWiring. Для всех остальных модулей, я могу просто запуститьКак использовать BundleWiring.findEntries() в системном комплекте?
bundleWiring.findEntries("/" + packageName, "*.class", 2)
, чтобы получить URL, для всех классов в этом пакете.
Проблема заключается в том, что этот подход не работает для системного пакета OSGi (комплект 0). Через classloader я смог увидеть, что классы, которые я хочу, находятся в tomcat/webapps/ROOT/WEB-INF/lib/x.jar, но как я могу найти путь к этим классам, если мне предоставляется только System Bundle как расслоение?
Пакеты экспортируются в system.packages.extra.mf
Что вы на самом деле пытаетесь сделать с этой информацией? –
Я пытаюсь проверить проблемы с разделенным пакетом, менеджер хочет избежать редактирования пакета, если оба пакета имеют один и тот же пакет с одинаковыми классами. Поэтому, когда системный пакет и конфликт модулей связаны, мне нужен способ получить все классы в пакете системных пакетов, чтобы проверить пакет пакета модулей. – tom
Это похоже на то, что вы должны делать в режиме сборки, а не во время выполнения. В этом случае вы можете просто посмотреть файлы JAR. –