2013-09-27 4 views
0

Я работаю над реализацией Mollom captcha (в качестве компонента), для которого мне нужен пакет OSGI. Я создал один, используя затмение (потому что для его компиляции потребовалось еще несколько банок). Хотя пакет был создан без каких-либо ошибок, когда я загружаю банку на консоль OSGi, она просто не запускается. Я открыл Error.log и я нахожу это: -Пакет CQ5 OSGi не запускается: - Активатор не найден

27.09.2013 12:10:33.264 *INFO* [pool-6-thread-34-com/day/cq/replication/job/publish(com/day/cq/replication/job/publish)] com.day.cq.replication.impl.AgentManagerImpl Processing job for agent publish 
27.09.2013 12:10:33.265 *INFO* [pool-6-thread-34-com/day/cq/replication/job/publish(com/day/cq/replication/job/publish)] com.day.cq.replication.Agent.publish Sending POST request to http://localhost:4503/bin/receive?sling:authRequestLogin=1 
27.09.2013 12:10:33.346 *INFO* [0:0:0:0:0:0:0:1 [1380264033342] POST /system/console/bundles/322 HTTP/1.1] com.mollom.client BundleEvent STARTING 
27.09.2013 12:10:33.346 *INFO* [0:0:0:0:0:0:0:1 [1380264033342] POST /system/console/bundles/322 HTTP/1.1] com.mollom.client BundleEvent STOPPING 
27.09.2013 12:10:33.346 *INFO* [0:0:0:0:0:0:0:1 [1380264033342] POST /system/console/bundles/322 HTTP/1.1] com.mollom.client BundleEvent STOPPED 
27.09.2013 12:10:33.346 *ERROR* [0:0:0:0:0:0:0:1 [1380264033342] POST /system/console/bundles/322 HTTP/1.1] cqse-httpservice %bundles.pluginTitle: Cannot start (org.osgi.framework.BundleException: Not found: com.mollom.client.Activator) org.osgi.framework.BundleException: Not found: com.mollom.client.Activator 

Дело в том, мой баночку НЕ содержит класс активатора (автоматически сгенерированное один).

Вот мой файл манифеста: -

Manifest-Version: 1.0 
Bundle-ManifestVersion: 2 
Bundle-Name: Mollom Client 
Bundle-SymbolicName: com.mollom.client 
Bundle-Version: 1.0.0.qualifier 
Bundle-Activator: com.mollom.client.Activator 
Bundle-Vendor: MOLLOM 
Bundle-RequiredExecutionEnvironment: JavaSE-1.6 
Import-Package: org.osgi.framework;version="1.3.0" 
Export-Package: com.mollom.client, 
com.mollom.client.datastructures, 
com.mollom.client.rest 
Bundle-ClassPath: lib/com.sun.jersey.jersey-core-1.4.0.jar, 
lib/jersey-client.jar, 
lib/oauth-client-1.6.jar, 
lib/oauth-signature-1.4.jar, 
src/ 
Bundle-ActivationPolicy: lazy 

Я понимаю, что добавление LIB пути к классам не лучшая практика, но я сомневаюсь, что любой из этих включенных банков будет использоваться за пределами моей службы Mollom Captcha, поэтому я пошел с ним.

Я думаю, что моя ошибка имеет какое-то отношение к тому, как я устанавливаю свой класс.

Может ли кто-нибудь указать мне правильное направление?

ответ

4

Эта часть выглядеть suspcious:

Bundle-ClassPath: lib/com.sun.jersey.jersey-core-1.4.0.jar, 
lib/jersey-client.jar, 
lib/oauth-client-1.6.jar, 
lib/oauth-signature-1.4.jar, 
src/ 

Вы должны добавить . (точка) в пачке Classpath, так что ваш активатор (вероятно, находится под JAR_ROOT/com/mollom/client/Activator.class) можно найти.

Более общий совет: почему вы не используете maven-bundle-plugin для подготовки пакета и файла манифеста? Опция Embed-Dependency позволяет включить все эти дополнительные банки.

+0

Я думаю, вы хотели сказать, что точка * должна * быть частью 'Bundle-Classpath'. В настоящее время это не так. Поэтому добавление его должно устранить проблему. И я согласен с вами в использовании надлежащих инструментов, например. bnd или maven. –

+0

Спасибо за комментарий, я отредактировал свой ответ, чтобы сделать его более понятным. –

Смежные вопросы