【问题标题】:CQ5 OSGi bundle does not start:- Activator cannot be foundCQ5 OSGi 捆绑包未启动:- 找不到激活器
【发布时间】:2013-09-27 07:27:03
【问题描述】:

我正在开发一个 Mollom 验证码实现(作为一个组件),我需要为此创建一个 OSGI 包。我使用 eclipse 创建了一个(因为它需要更多的 jar 才能正确编译)。虽然包的创建没有任何错误,但当我将 jar 上传到 OSGi 控制台时,它只是没有启动。我打开了error.log,我发现了这个:-

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

问题是,我的 jar 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 添加到类路径不是最佳实践,但我怀疑这些包含的 jar 中的任何一个都将在我的 Mollom Captcha 服务之外使用,所以我选择了它。

我认为我的错误与我设置类路径的方式有关。

谁能指出我正确的方向?

【问题讨论】:

    标签: java eclipse-plugin osgi aem osgi-bundle


    【解决方案1】:

    这部分看起来很可疑:

    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-Classpath,以便可以找到您的激活器(可能位于JAR_ROOT/com/mollom/client/Activator.class 下)。

    更一般的提示:为什么不使用maven-bundle-plugin 来准备捆绑包和适当的清单文件? Embed-Dependency 选项允许包含所有这些额外的 jar。

    【讨论】:

    • 我想你的意思是说点应该是Bundle-Classpath的一部分。目前不是。所以添加它应该可以解决问题。我同意你关于使用适当工具的看法,例如bnd 或 maven 捆绑插件。
    • 感谢您的评论,我已经编辑了我的答案以使其更加清晰。
    猜你喜欢
    • 2011-01-01
    • 1970-01-01
    • 2019-08-31
    • 1970-01-01
    • 2014-01-12
    • 2018-04-22
    • 1970-01-01
    • 2014-04-18
    • 1970-01-01
    相关资源
    最近更新 更多