问题标签 [bnd]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
245 浏览

java - 具有重复版本的 Bnd Import-Package

我想知道 bnd 2.1.0 是否可以在 Import-Package 中生成清单:我们有两个名称相同但版本不同的包。这个动作有可能而且有意义吗? Import-Package: 'com.sample.logger;version="1.0.0",com.sample.logger;version="[2,3)"'

0 投票
1 回答
984 浏览

osgi - 如何在运行时更改服务的属性(声明式服务)

当我使用 OSGi API(ServiceRegistration 的一个实例)时,我可以在运行时轻松更改服务的属性。我怎样才能对声明式服务做同样的事情?有没有基于 BndTool 的注解的解决方案?

非常感谢

0 投票
1 回答
1597 浏览

java - BND 在 'uses' 指令中包含相同包的导出包

maven-bundle-plugin我正在使用 BND将库打包为 OSGi 包。我注意到 BND 生成了一个很长的Export-Package列表,主要是因为它包含了许多由库本身在uses其他导出包的指令中导出的包。

我(有点)理解uses指令。我假设在这种情况下uses,导出包中的类在方法签名(因此导入)中使用了其他包的类(在 下列出)。

从这个意义上说,我有两个问题:

  1. 是否真的有必要在导出包的uses指令中包含由同一个包导出的包?这些包不会被任何其他包导出;因此没有拆分包。
  2. 这种行为是否表明库的包结构定义不正确?顶级包使用的几个类通常位于子包中,反之亦然。这是一个被改编为 OSGi 包的库。包结构不是为 OSGi 友好而设计的。

以下是清单中列出的大多数导出包的方式

从上面uses列表中的所有包中,仅从javax.measure.unit另一个包中导入。

maven-bundle-plugin配置:

0 投票
1 回答
472 浏览

java - 使用 XML 配置服务 ..(而不是属性)

我有一个(bnd-annotated)组件,它实现了一个简单的 api 并将自己作为服务公开

它的配置由 Felix FileInstall 从监视的目录加载,服务由 Felix 配置服务实例化(至少,我假设这是发生了什么 - 我是 OSGi 的新手,请多多包涵)这个,以及生成的 MetaType 描述符工作得很好。

但是,就目前而言, FooImpl 需要结构化配置(列表列表、列表映射..等),我想知道是否有一种优雅的( * )方法可以通过类似的工作流程来配置组件的实例;也就是说,配置发现和实例化/部署仍然是集中的。

在我看来,配置服务规范管理地图 - 我是否必须推出自己的配置服务和 FileInstall 才能呈现带有 xml/json/yaml 支持的结构化配置的组件?

  • 与在 properties ...confiception 中定义 xml 配置文件的位置相反?并做我自己的解析。
0 投票
1 回答
2039 浏览

java - OSGi ( Felix ) 额外的 system.bundle 导出

简单的实验——

bundle A 需要一些 com.sun.xml.internal.bind 类才能通过它的类加载器 ( jaxb.. ) 使用

我通过将包添加到“org.osgi.framework.system.packages.extra”(在 felix 中实现的标准框架参数)来搜索强制 system.bundle 导出 com.sun.xml.internal.bind 的理论解决方案,记录在http://felix.apache.org/site/apache-felix-framework-configuration-properties.html)并将其导入我的包中。

通过这样做,捆绑将不再解决..

( 5 是使用 jaxb 的捆绑包)为“com.sun.xml.internal.bind”设置“org.osgi.framework.bootdelegation”,而不是在依赖捆绑包中导入它,如文档所述。

我是否误解了 system.packages.extra 应该做什么?我可以不解决来自 system.bundle 的导入吗?我尝试在 Import-Package 指令底部通过 bnd 在导入中显式设置 system.bundle

这导致

ps:我使用 bnd 和 -runproperties 来定义这些。我的 bndrun 文件有:

需要 jaxb 的包定义了以下导入

当试图在 bndrun 编辑器中解决依赖关系时,我得到

0 投票
1 回答
1582 浏览

ant - 如何使用 bndwrap 从导出中排除某些包

我试图用 ant bndwrap任务包装的现有 jar 包含来自另一个 jar 的类。我的意思是展开的罐子,而不是嵌入的罐子。

如何从捆绑的导出包声明中省略这些包?

基本上罐子里有包

我只想导出 org.stuff 包,但 bndwrap 将包含两者。

0 投票
1 回答
6331 浏览

java - Maven Bundle Plugin:导出具有私有引用

更新maven-bundle-plugin从版本2.3.5到版本2.4.0运行后mvn clean install输出一些警告消息,我不完全理解。例如

Export ch.entwine.weblounge.contentrepository.impl.index, has 1, private references [org.elasticsearch.action.bulk]

我想这与嵌入式库(elasticsearch)有关。以下是 POM 的部分内容:

错误消息的确切含义是什么?解决此类问题的推荐方法是什么?

0 投票
2 回答
1499 浏览

java - 如何使 Eclipse 使用 bnd 注释自动生成 OSGi 声明式服务捆绑组件 XML?

由于我们使用多模块化 Maven 项目,我们目前不想使用 Bndtools。

目前我们想添加或修改 bnd 注释,并让 Eclipse 自动在 OSGI-INF 文件夹中生成 component.xml 文件,就像 Maven 自动生成 Manifest 一样。

现在每次我们更改注释时,我们必须在每个包上执行一个 Maven 包,从 jar 中提取新的 OSGI-INF 文件夹并将其手动添加到包中。这是令人厌烦的、令人困惑的、容易出错且耗时的!

谢谢您的帮助!

0 投票
1 回答
2039 浏览

java - OSGi 运行时 (io.netty.common) 可用的类型的 ClassNotFoundException

在过去的一天半里,以下看似微不足道的问题一直让我发疯: - 捆绑包“netty-worker-service”导出了一个简单的接口,该接口包含由 io.netty.transport 提供(导出)的类型

它还实现了这个接口并将其声明为服务:

bnd 创建以下组件 xml

manifest.mf

不是太复杂的东西,对吧?但是,使用以下bndrun配置:

虽然一切都正确解决,但我在日志中看到以下内容..

tl;dr:io.netty.util.concurrent.EventExecutorGroup 无处可寻。

我验证了以下内容: - io.netty.transport 从 io.netty.common 正确导入此类型 - io.netty.common 包含并导出此类型

我不知道如何继续调试。任何指针都非常感谢!项目源代码可在https://github.com/andlaz/netty-worker-service获得

0 投票
3 回答
210 浏览

osgi - 从实现包中导出 API

有人可以向我解释 BND 导出捆绑包没有的 api 包背后的基本原理吗?这对我来说似乎是错误的,它总是(AFAICT)导致ClassNotFoundException

特别是bundle
A 包含com.foo.api.MyInterface
bundle B 包含com.foo.impl.InterfaceImpl哪些实现MyInterface

因此,如果我告诉 bnd 导出包com.fooA 中的包,他将正确导出com.foo.api,但如果我告诉com.foo包 B 中的导出包,它将错误导出com.foo.api,因此MyInterface的消费者被连接到包 B,然后在运行时获得 ClassNotFoundException

为什么 BND 不保证当一个包导出一个包时它实际上包含它?

我知道如果我导出com.foo.apicom.foo.impl不是com.foo在我的简单示例中解决问题,但在我们的实际系统中,这并不是真正的可能性。此外,实际的问题是为什么 BND 会这样做,而不是如何解决问题。我已经知道解决问题的方法