问题标签 [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.
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)"'
osgi - 如何在运行时更改服务的属性(声明式服务)
当我使用 OSGi API(ServiceRegistration 的一个实例)时,我可以在运行时轻松更改服务的属性。我怎样才能对声明式服务做同样的事情?有没有基于 BndTool 的注解的解决方案?
非常感谢
java - BND 在 'uses' 指令中包含相同包的导出包
maven-bundle-plugin
我正在使用 BND将库打包为 OSGi 包。我注意到 BND 生成了一个很长的Export-Package
列表,主要是因为它包含了许多由库本身在uses
其他导出包的指令中导出的包。
我(有点)理解uses
指令。我假设在这种情况下uses
,导出包中的类在方法签名(因此导入)中使用了其他包的类(在 下列出)。
从这个意义上说,我有两个问题:
- 是否真的有必要在导出包的
uses
指令中包含由同一个包导出的包?这些包不会被任何其他包导出;因此没有拆分包。 - 这种行为是否表明库的包结构定义不正确?顶级包使用的几个类通常位于子包中,反之亦然。这是一个被改编为 OSGi 包的库。包结构不是为 OSGi 友好而设计的。
以下是清单中列出的大多数导出包的方式
从上面uses
列表中的所有包中,仅从javax.measure.unit
另一个包中导入。
maven-bundle-plugin
配置:
java - 使用 XML 配置服务 ..(而不是属性)
我有一个(bnd-annotated)组件,它实现了一个简单的 api 并将自己作为服务公开
它的配置由 Felix FileInstall 从监视的目录加载,服务由 Felix 配置服务实例化(至少,我假设这是发生了什么 - 我是 OSGi 的新手,请多多包涵)这个,以及生成的 MetaType 描述符工作得很好。
但是,就目前而言, FooImpl 需要结构化配置(列表列表、列表映射..等),我想知道是否有一种优雅的( * )方法可以通过类似的工作流程来配置组件的实例;也就是说,配置发现和实例化/部署仍然是集中的。
在我看来,配置服务规范管理地图 - 我是否必须推出自己的配置服务和 FileInstall 才能呈现带有 xml/json/yaml 支持的结构化配置的组件?
- 与在 properties ...confiception 中定义 xml 配置文件的位置相反?并做我自己的解析。
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 编辑器中解决依赖关系时,我得到
ant - 如何使用 bndwrap 从导出中排除某些包
我试图用 ant bndwrap任务包装的现有 jar 包含来自另一个 jar 的类。我的意思是展开的罐子,而不是嵌入的罐子。
如何从捆绑的导出包声明中省略这些包?
基本上罐子里有包
和
我只想导出 org.stuff 包,但 bndwrap 将包含两者。
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 的部分内容:
错误消息的确切含义是什么?解决此类问题的推荐方法是什么?
java - 如何使 Eclipse 使用 bnd 注释自动生成 OSGi 声明式服务捆绑组件 XML?
由于我们使用多模块化 Maven 项目,我们目前不想使用 Bndtools。
目前我们想添加或修改 bnd 注释,并让 Eclipse 自动在 OSGI-INF 文件夹中生成 component.xml 文件,就像 Maven 自动生成 Manifest 一样。
现在每次我们更改注释时,我们必须在每个包上执行一个 Maven 包,从 jar 中提取新的 OSGI-INF 文件夹并将其手动添加到包中。这是令人厌烦的、令人困惑的、容易出错且耗时的!
谢谢您的帮助!
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获得
osgi - 从实现包中导出 API
有人可以向我解释 BND 导出捆绑包没有的 api 包背后的基本原理吗?这对我来说似乎是错误的,它总是(AFAICT)导致ClassNotFoundException
特别是bundle
A 包含com.foo.api.MyInterface
bundle B 包含com.foo.impl.InterfaceImpl
哪些实现MyInterface
因此,如果我告诉 bnd 导出包com.foo
A 中的包,他将正确导出com.foo.api
,但如果我告诉com.foo
包 B 中的导出包,它将错误导出com.foo.api
,因此MyInterface的消费者被连接到包 B,然后在运行时获得 ClassNotFoundException
为什么 BND 不保证当一个包导出一个包时它实际上包含它?
我知道如果我导出com.foo.api
而com.foo.impl
不是com.foo
在我的简单示例中解决问题,但在我们的实际系统中,这并不是真正的可能性。此外,实际的问题是为什么 BND 会这样做,而不是如何解决问题。我已经知道解决问题的方法