Как загрузить / получить все классы в пакете, используя OSGi? - PullRequest
1 голос
/ 30 марта 2020

Я хотел бы загрузить все классы в пакете, кто-нибудь знает, как это сделать без какой-либо сторонней библиотеки?

Например, в пакете com.example.test есть классы: A. java, B. java, C. java, D. java и E. java, et c.

Есть ли способ загрузки все классы в com.example.test после активации OSGi?

1 Ответ

2 голосов
/ 30 марта 2020

Вы можете перебрать записей с Bundle.findEntries(). Помните, что java класс com.example.A имеет путь com/example/A.class.

Это работает большую часть времени, за исключением фрагментов и пакета классов . В разумности обеих идей можно сомневаться, но печальная история заключается в том, что они используются. Фрагменты - это другие пакеты, которые связывают загрузчик классов с пакетом хоста. Поэтому вам нужно будет найти фрагменты и пересечь их.

Bundle-ClasPath является заголовком. Он перечисляет набор ресурсов в пакете, которые должны быть размещены в пути к классам пакета. Вы также должны пройти их.

Если вы можете контролировать пакет, который хотите пройти самостоятельно, не используйте фрагменты и не используйте Bundle-ClassPath. Что в общем и целом является хорошей идеей, эти понятия почти никогда не имеют решающего значения.

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