我有一个带有激活器的OSGi插件,我请求在我的tomcat jsf项目下启动。
基于:http://www.eclipse.org/equinox/documents/quickstart.php和其他一些文档,我已将此结构放在我的WEB-INF目录下以启动osgi的equinox实现。我已经能够直接访问插件,但不能通过从另一个插件引用它来以编程方式访问插件。就是这个例子。
MyProject的 组态/ config.ini文件 org.eclipse.osgi_3.3.0.jar org.eclipse.equinox.common_3.3.0.jar org.eclipse.update.configurator_3.2.100.jar 插件/ com.fnet.tts.service_1.0.0.jar
我在config.ini中放置了以下两行
osgi.bundles=org.eclipse.equinox.common@2:start,org.eclipse.update.configurator @ start,org.eclipse.equinox.registry @ 3:start,com.fnet.tts.service @ 4 :开始 osgi.bundles.defaultStartLevel = 4
但是当我尝试激活调用tts.service的包时,我收到此错误。
详细说明: com.fnet.runtime.KSException:无法启动包'com.fnet.tts.service.viewSchedule_2.0.0.jar' 在com.runtime.impl.RuntimeServiceImpl $ KSImpl .loadKnowledgebase(RuntimeServiceImpl.java:190) at com..loadKnowledgebaseHandle(InterviewContext.java:83) 引起:org.osgi.framework.BundleException:无法解析包。 原因:缺少约束:Require-Bundle:com.fnet.tts.service;束版本=“1.0.0” 在org.eclipse.osgi.framework.internal.core.BundleHost.startWorker(Bundl eHost.java:305) 在org.eclipse.osgi.framework.internal.core.AbstractBundle.start(Abstrac tBundle.java:265) 在org.eclipse.osgi.framework.internal.core.AbstractBundle.start(Abstrac tBundle.java:257) 在com.fnet.runtime.impl.RuntimeServiceImpl $ KSImpl .loadKnowledgebase(RuntimeServiceImpl.java:188) ......还有3个
我一直在看这几个小时,我正在寻找线索,提示或答案,以便我能继续前进。
感谢。
答案 0 :(得分:0)
您是否可以启用更多调试输出以查看“com.fnet.tts.service”捆绑包发生了什么? Equinox是否尝试加载并失败,或者甚至没有尝试过?
另外,您可以访问OSGi控制台吗?如果是这样,安装的捆绑包列表如何?您可以手动从控制台安装捆绑包吗?
您正在启动级别4启动捆绑包。可能未达到此启动级别。当您在1级启动捆绑包(所有捆绑包?)时它是否有效?