2013-09-27 41 views
0

我正在研究Mollom captcha實現(作爲組件),爲此我需要創建一個OSGI程序包。我使用eclipse創建了一個(因爲它需要幾個罐子才能正確編譯)。儘管該包創建時沒有任何錯誤,但是當我將jar上傳到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 

的事情是,我的罐子DOES含活化類(自動生成一個)。

這裏是我的清單文件: -

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到classpath不是最好的做法,但我懷疑這些包括罐子是超越我的Mollom驗證碼服務時使用,所以我去了。

我認爲我的錯誤與我設置類路徑的方式有關。

任何人都可以指向正確的方向嗎?

回答

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/ 

您應該添加.(點)的包,類路徑,所以你的活化劑(可能放在JAR_ROOT/com/mollom/client/Activator.class下)可以找到。

更一般的提示:爲什麼不使用maven-bundle-plugin來準備捆綁包和正確的清單文件? Embed-Dependency選項允許包含所有這些附加的罐子。

+0

我認爲你的意思是說dot *應該是'Bundle-Classpath'的一部分。目前不是。因此添加它應該可以解決問題。我同意你使用適當的工具,例如bnd或Maven捆綁插件。 –

+0

感謝您的評論,我編輯了我的答案,使其更加清晰。 –

相關問題