Jetty 更新到 9.4.x 后:缺少约束:Require-Capability: osgi.extender;过滤器:=“(osgi.extender=osgi.serviceloader.pro
Posted
技术标签:
【中文标题】Jetty 更新到 9.4.x 后:缺少约束:Require-Capability: osgi.extender;过滤器:=“(osgi.extender=osgi.serviceloader.processor)”【英文标题】:After Jetty Update to 9.4.x: Missing Constraint: Require-Capability: osgi.extender; filter:="(osgi.extender=osgi.serviceloader.processor)" 【发布时间】:2017-10-02 04:03:55 【问题描述】:从 Jetty 9.3.x 更新到 9.4.x 后,我在启动 OSGi 框架 启动时收到以下验证消息:
Missing Constraint: Require-Capability: osgi.extender; filter:="(osgi.extender=osgi.serviceloader.processor)"
Missing Constraint: Require-Capability: osgi.extender; filter:="(osgi.extender=osgi.serviceloader.registrar)"
我不知道我必须添加哪些捆绑包?
已包含在发布中(以及许多其他内容):
org.eclipse.jetty.client
org.eclipse.jetty.continuation
org.eclipse.jetty.deploy
org.eclipse.jetty.http
org.eclipse.jetty.io
org.eclipse.jetty.rewrite
org.eclipse.jetty.security
org.eclipse.jetty.server
org.eclipse.jetty.servlet
org.eclipse.jetty.servlets
org.eclipse.jetty.util
org.eclipse.jetty.webapp
org.eclipse.jetty.xml
org.eclipse.osgi
org.eclipse.osgi.services
org.eclipse.osgi.util
单击对话框中的“确定”后,服务器将启动且没有错误消息。 我希望这个问题会在 Jetty 9.4.5 中得到解决,但它仍然存在。
【问题讨论】:
这是由于在 Jetty 所依赖的许多规范(OSGi 之外)中对java.util.ServiceLoader
的依赖增加。
java.util.ServiceLoader
是 JRE 1.8 的一部分,为什么会出现验证错误?
见blog.osgi.org/2013/02/javautilserviceloader-in-osgi.html
感谢链接已修复。
【参考方案1】:
看来您需要一个 OSGi Service Loader Mediator 规范的实现。试试 Apache Aries SPI Fly。
【讨论】:
【参考方案2】:我必须下载以下三个捆绑包并将其添加到目标:
org.apache.aries.spifly.dynamic.bundle org.apache.aries.util asm-all如Apache Aries SPI Fly 网站上所述,让 SPI 飞起来部分。
因为我不想操纵字节码,所以我选择“用于动态编织”。
有关该主题的更多信息可以在此blog 中找到。
【讨论】:
以上是关于Jetty 更新到 9.4.x 后:缺少约束:Require-Capability: osgi.extender;过滤器:=“(osgi.extender=osgi.serviceloader.pro的主要内容,如果未能解决你的问题,请参考以下文章