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的主要内容,如果未能解决你的问题,请参考以下文章

如何删除视图和更新约束?

ORA-00905: 缺少关键字(约束外键)

uiscrollview无法滚动到底部

phpmyadmin 导出后缺少外键约束

更新到 Material 1.2.0 后,MaterialButton 上缺少角半径属性

更新角度4.4到6后,缺少TypeScript编译错误