Пакет, который вы имеете в виду, является частью JDK. Вам необходимо разоблачить его, чтобы сделать его доступным в OSGi, и у вас есть два варианта:
Первый, а в большинстве случаев предпочтительный вариант - выставить этот пакет через системный пакет. Каркас OSGi имеет свойство, которое вы можете установить, чтобы сделать это:
org.osgi.framework.system.packages.extra=...
Как его значение, вы предоставляете его с разделителями-запятыми список пакетов, которые вы хотите выставить, поверх тех, которые уже подвергаются в рамках. В вашем случае, по крайней мере, com.sun.net.httpserver, но может быть больше пакетов, которые вам нужны. В этом случае также убедитесь, что пакет, который использует этот пакет, импортирует этот пакет.
Второй вариант заключается в использовании механизма, используемого для делегирования загрузки. Его следует использовать только в качестве крайней меры, поскольку он нарушает модульность, и если он не используется тщательно, это может привести к другим проблемам. Опять же, это свойство, которое вам нужно установить:
org.osgi.framework.bootdelegation=*
Здесь вы можете указать разделенный запятыми список пакетов, которые должны быть загружены с помощью загрузчика загрузчика классов. Подстановочные знаки поддерживаются (как показано в примере выше), но вам рекомендуется быть как можно более конкретным, поэтому в вашем случае, например, используйте значение com.sun. * В качестве значения.
У вас должен быть com.sun.net.httpserver как импортированный пакет в вашем комплекте, а внутри контейнера у вас должен быть пакет, который экспортирует этот пакет. –
Решение Marcel ниже действительно является решением вашего вопроса, но ИМХО это не путь (и маловероятно, что это действительно необходимо). Пакеты com.sun. * Должны быть частными и должны рассматриваться как таковые. Вероятно, есть более стандартное решение вашей проблемы. Если вы решите проблему, вы можете получить еще лучшее решение. –