问题标签 [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.
osgi - 无法使用 bndtools 启动声明式服务 (DS) 组件
我已经为 Eclipse 安装了标准bndtools插件,启动并运行了 apache felix osgi 运行时。我正在尝试了解声明性服务 (DS) 组件。显然,在没有注释之前(bndtools 教程中给出了一个示例),组件是使用 xml 数据编写的。这就是我想要做的。
这是一个简单的类(将作为 DS 组件发布):“HelloComponent.java”
这是进行组件声明的 xml 文件:“minimal.xml”
这是 bndtools 应该使用的 .bnd 文件来生成最终将发布到 OSGi 运行时的 jar 文件:“minimal_ds.bnd”
请注意,我在主机运行时 OSGi 容器中启动并运行了以下捆绑包:
尽管一切都在积极运行,但我无法弄清楚为什么 DS 组件没有被初始化(我应该看到控制台输出:“HelloComponent created.”)。任何帮助表示赞赏。
最后,这里是项目目录结构:
sbt - Sbt 从消费项目添加到 PluginClassPath。
我正在使用从 git 构建的 sbt-osgi,并且正在尝试通过 bnd 标头加载 bnd 插件 jar。
AdditionalHeaders := Map(“-buildpath”->“org.apache.felix.dependencymanager.annotation.jar”,“-plugin”->“org.apache.felix.dm.annotation.plugin.bnd.AnnotationPlugin”)
无论如何我要插入 sbt 类加载器还是我将不得不分叉 sbt-osgi ?
osgi - 如何使用 bndtools 打包 OSGi 子系统
我正在评估 bndtools 作为 eclipse 中 websphere OSGi 工具的替代方案,以打包自由配置文件功能。
Liberty 配置文件使用打包为 .esa 的 OSGi 子系统来扩展运行时。根据 bnd git repo 中的这个文件,似乎可以使用 BND 打包子系统。
但我找不到任何关于如何设置 ESA 项目的文档。有人可以给我一些指示吗?
osgi - '.' 在哪里?包从哪里来?
我一直很高兴在构建过程中使用 Bndtools 在 felix/osgi 上构建应用程序。我已经将我所有的第 3 方非捆绑 jar 包作为捆绑包,将我所有的内部 jar 构建为捆绑包,并且一直在开发 4 个带有激活器和服务的捆绑包。到目前为止,这一切都运作良好......
...然后,昨天突然间,bndtools 开始放一个“。” 在我的 MANIFEST.MF 中的 Import-Package 指令中。这导致了以下错误:
并导致捆绑包无法加载。
现在,大概是因为我昨天对源代码进行了一些更改,但是对于我的生活,我无法弄清楚那可能是什么。我在过去几天所做的唯一更改是在我自己的源代码中。我没有添加任何第 3 方依赖项。
当我让 eclipse bnd 构建器生成包时,它没有放“。” 在导入列表中,但我在构建过程中使用了 ant 任务,它正在放置“。” 在包装清单中。
任何人都可以评论为什么将它放在那里吗?
这是bnd文件:
java-8 - How to provide additional class for a package on OSGi system classpath for J2SE 1.8 profile
Inside ee.j2se-1.8 the package org.w3c.dom is included.
The bundle xml-apis_1.4.1.20140905-131237.jar contains the same package org.w3c.dom, but with one important class more ... ElementTraversal.class more.
So here my questions...
How can I provide the missing class inside my Equinox OSGi runtime?
apache-felix - 不要从特定的 jar 加载/扫描类文件
我想知道如何配置 maven-bundle-plugin(由 bnd 支持)以完全忽略嵌入式 jar 中包含的类。
背景
我在一个受控环境中工作,我的代码运行的环境由一家公司(包括所有工具)定义。代码是java并且使用OSGi来定义模块依赖。
一些提供的模块包含看起来像无效的类文件,我只能假设系统会在尝试将它们加载到任何类型的 JVM 之前“纠正”这些类文件。在任何情况下,这些类文件在部署到目标系统时都可以工作。
我正在尝试创建一个基于 Maven 的构建系统,该系统可以生成系统理解的包,并且遇到了一个问题,即 BND(通过 apache-felix)正在读取这些无效的类文件,这会导致错误。
我想要一种方法让包含这些类文件的 jar 放在包的类路径上,但其中包含的.class
文件不被 bnd 读取/处理。我可以满足于简单地忽略错误并继续,但如果不让 felix 中止整个构建阶段,我也找不到办法做到这一点。
ant - 从 ant 路径中删除不存在的条目
我遇到了一种情况,我们正在生成一个 Ant <path>
,它可能包含一些实际上不存在的目录。不幸的是,这被送入bnd
,如果路径中的任何东西丢失,它就会爆炸。
所以我想要的是一种过滤 a<path>
以仅保留那些实际存在的路径元素的方法。
有没有简单的方法在Ant中说这个,或者我必须写一个任务?
osgi - 有没有办法从内部的宏中引用 bnd 文件名?
我想使用子捆绑 bnd 文件的文件名作为文件本身内部没有扩展名的值。像这里 ${filename_without_extension} 有机会吗?
文件:core.bnd
java - OSGi Bundle 未从 Felix Host 应用程序开始
我在主机应用程序中使用 Apache Felix 来提供在运行时加载扩展的能力。该机制工作得很好,但是如果我包含某些依赖项,我会在开始的捆绑包方面有一些非常喜怒无常的行为。例如,如果我在 pom.xml 中使用以下内容:
一切正常,捆绑注册并启动。但是,如果我将它包含async-http-client
在捆绑包中,它会注册但不会启动!我已经尝试将依赖项嵌入到包中,即使父级主机应用程序将其公开。如果我查看编译包的内部,jar 已包含在内,但它仍然不会真正启动。
我尝试添加:
并修改:
这些选项都不起作用。我在主机应用程序中没有收到任何错误,我只是无法弄清楚为什么某些库会导致此问题,而其他库则不会。
osgi - 需要 OSGi 配套捆绑包吗?
我在 Eclipse 中有两个基于 Bndtools 的不同项目。第一个生成带有以下清单的 JAR:
第二个有以下清单:
这两个项目需要 osgi.cmpn :第一个用于 ServiceTracker(包 org.osgi.util.tracker),第二个用于 ManagedService(包 org.osgi.service.cm)。
第一个项目效果很好:我安装并启动捆绑包没有问题。我可以从第二个项目安装包,但是当我启动它时,我收到以下错误:
有什么问题 ?如果两个项目都需要 osgi.cmpn JAR ...为什么第一个在启动时不抛出此错误?
谢谢,保罗。