Подтвердить что ты не робот

Какая сделка с частными пакетами?

Я работаю с OSGi некоторое время, но я все еще ничего не понимаю о частных пакетах.

  • Экспортированный пакет - это пакет с видимым для других пакетов
  • Импортированный пакет - это пакет, который импортируется пакетом, экспортирующим пакет.
  • Частный пакет - это пакет, который не отображается в других пакетах (я не понимаю)

Не все ли пакеты пакетов, которые не экспортируются, невидимы для всех других пакетов? Если да, то какая разница с частными пакетами и пакетами, которые не экспортируются?

Я прочитал OSGi в действии и "OSGi и Apache Felix 3.0 - Руководство для начинающих", но я не смог найти разницу.

4b9b3361

Ответ 1

Да, все пакеты, не определенные в записи manifest.mf Export-Package, являются частными пакетами. Вам не нужно указывать их отдельно, это просто еще один термин для удобства общения.

Если у вас есть манифест, сгенерированный, например, с помощью модуля maven-bundle-plugin, этот термин становится немного более актуальным, потому что плагин maven bundle будет по умолчанию экспортировать все пакеты, за исключением, например, пакета с именем internal ( или подпакеты из этого). Это как-то обратный подход, поскольку вы указываете частные пакеты и рассчитываете экспортированный пакет. Подробнее см. плагин maven bundle.

Ответ 2

Нет разницы.

Любой пакет, который не указан в Export-Package, является приватным.... что все есть.

Возможно, вы видели другой заголовок с именем Private-Package. Это НЕ заголовок OSGi, и OSGi Framework полностью игнорируется. Если вы видите это, это означает, что пакет был создан с помощью bnd или Maven Bundle Plugin, который использует этот заголовок, имеет инструкцию build-time. Поэтому он имеет значение только во время сборки и не имеет никакого эффекта во время выполнения.