Apache Felix пропускает javax.sql.Datasource

Я только что перешел с Equinox на Apache Felix. Теперь отсутствует класс javax.sql.datasource:

java.lang.NoClassDefFoundError: javax/sql/DataSource

Мой пакет импортирует javax.sql в файл манифеста, и я попытался добавить следующую строку в конфигурацию felix:

org.osgi.framework.system.packages.extra=javax.sql

Есть ли способ научить Феликса экспортировать бандл или есть бандл, который это делает? Он отлично работал в Equinox даже без оператора импорта в манифесте.

РЕДАКТИРОВАТЬ: файл манифеста:

Manifest-Version: 1.0
Bundle-ManifestVersion: 2
Bundle-Name: Database
Bundle-SymbolicName: ...database
Bundle-Version: 1.0.0
Import-Package: javax.sql,
 org.osgi.framework;version="1.3.0",
 org.osgi.service.component;version="1.1.0"
Bundle-RequiredExecutionEnvironment: JavaSE-1.6
Bundle-ClassPath: lib/mysql-connector-java-5.1.20-bin.jar,
 .
Export-Package: ...database.model,
 ...database.service
Service-Component: OSGI-INF/component.xml

Спасибо, Даниэль


person dbrettschneider    schedule 09.07.2012    source источник


Ответы (1)


Феликс уже экспортирует этот пакет.

Скорее всего, что-то не так с вашим оператором Import-Package. Вы заявили, что ваш пакет импортирует пакет, но, пожалуйста, опубликуйте копию своего MANIFEST.MF, чтобы быть уверенным.

person Neil Bartlett    schedule 09.07.2012
comment
Что ж, это выглядит хорошо. Возможно ли, что исключение вызывается другим пакетом, отличным от этого? Видите ли, если бы Феликс не экспортировал пакет (как было предложено в вашем первоначальном вопросе), вы бы получили ошибку другого типа, то есть ошибку разрешения. Вы никогда не должны получать NoClassDefFoundError в OSGi. - person Neil Bartlett; 09.07.2012
comment
Оказалось, что мне пришлось импортировать javax.sql и javax.naming в свой пакет. - person dbrettschneider; 09.07.2012