2015-09-21 5 views
1

Я новичок в OSGi. Я использую eclipse PDE 'Kepler Service Release 2'.В OSGi, получая ClassNotFoundExceptions при попытке использовать классы из экспортированных пакетов системы

Я хочу сделать классы внутри пакета javax.servlet доступными для моих тестовых клиентов. Но я получаю NoClassDefFoundError, когда, просто для тестирования, пытается создать объект ServletException.

java.lang.NoClassDefFoundError: javax/servlet/ServletException.

Я пробовал эти два пути. оба не работают:

Попробуйте 1: с помощью системных пакетов

У меня есть эти параметры запуска в мое затмение OSGI Framework:

-Dorg.osgi.framework.system.packages.extra=javax.servlet
-Dorg.osgi.framework.system.capabilities="osgi.ee; osgi.ee=\"JavaSE \";version:List=\"1.0,1.1,1.2,1.3,1.4,1.5,1.6,1.7,1.8\""

я могу видеть этот Export-пакет в системе Bundle (0): javax.servlet; version="0.0.0"[exported] Im my bundle У меня есть этот Import-Package: org.osgi.framework;version="[1.5,2)",javax.servlet.

Я не мог получить эту работу даже с флагом -Dorg.osgi.framework.bootdelegation=* при запуске контейнера.

Попробуйте 2: с помощью ExtensionBundle

Мой ExtensionBundle имеет банку JavaEE-Апи-6.0.jar в пути к классам и экспортирует пакет javax.servlet. Но все же я получаю 'java.lang.NoClassDefFoundError: javax/servlet/ServletException'.

У меня нет параметров запуска для этого.

В Manifest.mf расслоения расширения: ...

Bundle-ClassPath:., JavaEE-апи-6.0.jar
Экспорт-пакет: ...., javax.servlet, ...
Fragment-Host: system.bundle; расширение: = структура

...

я упускаю что-нибудь.

Заранее спасибо.

ответ

1

JRE не содержит пакет javax.servlet. Поэтому вы не можете просто экспортировать его. Вы можете взглянуть на узел ниже в центре maven. Он экспортирует пакет. Также помните, что API сервлета не будет достаточным для запуска сервлета. Вам также понадобится реализация osgi HTTPService. Возможные варианты реализации: felix http service, org.eclipse.equinox.http.jetty, pax-web. Поэтому даже лучшим решением может быть установка одного из них.

javax.servlet:javax.servlet-api:3.1.0