问题标签 [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 回答
122 浏览

eclipse-plugin - “uses”和“Import-Package”之间的不一致

我正在使用 bndMANIFEST.MF为库生成。最后,我得到了一个带有以下冲突的清单:

A, B,C都驻留在单独的插件中,也称为A,BC. 在运行时,Eclipse 不加载 plugin C,所以我遇到了崩溃。此外,Eclipse 工具似乎只查看 . Import-Package,因为该工具也不知道对C.

是否应该Import-Package始终包含uses声明中的所有包?它是一个 Eclipse 错误,还是(更有可能)我对 bnd 做错了什么,导致它错过了对 C 的依赖?

0 投票
1 回答
1344 浏览

java - 如何正确启动和关闭 OSGi 容器?

我制作了一个包含 Activator 文件的包,该文件基本上按正确的顺序启动其他包。我需要这个,因为框架会在它们的依赖项完成启动之前启动一些包。例如,取决于我的日志服务的我的包将在它之前启动,因此不会为这些包存储日志消息。有了这个激活器,我可以选择谁先开始,因为在felix中没有明确的方法来做到这一点。

代码在这里:

这就是我在 felix 的 bundle/ 文件夹中组织我的包的方式。

请注意,lumina.launcher-1.0.0-SNAPSHOT.jar是我的 Activator 所在的位置,并且是 felix 自动启动的唯一包。

顺便说一句,这很好用,不知道是否有更聪明的方法来做到这一点。所以上面代码的想法是按以下顺序从每个目录启动所有包:第三方、共享组件、lumina、webconsole 和插件。

另一方面,当我在 OSGi 容器运行时在终端中点击 ^C 时,它开始一个接一个地停止所有包。这没关系,但日志服务是第一个停止的捆绑包之一,我希望它成为最后一个捆绑包之一。有没有办法设置 OSGi 容器关闭时停止捆绑的顺序?

谢谢!

0 投票
1 回答
38 浏览

osgi - bndtools 教程中运行时没有 DS

我关注 bndtools 教程。在第 5 步,我应该在运行时看到 9 个捆绑包,包括 DS 捆绑包。 我应该得到的捆绑包

相反,我只得到这些捆绑包,并且 ExampleComponent 不提供 Greetings 服务:

我收到的包裹

有人知道我在这里做错了什么吗?

我使用 Eclipse Luna 版本:Luna Service Release 2 (4.4.2)

0 投票
1 回答
770 浏览

java - OSGi 功能:有效时间:解决 vs 活跃

一个能力应该在什么时候有一个有效的时间“解决”,什么时候“活跃”?

您何时希望在解析资源时忽略功能?你希望他们什么时候得到尊重?

http://bnd.bndtools.org/chapters/230-manifest-annotations.html

https://github.com/bndtools/bnd/blob/e4ffaf6e5fa404972c11e8ff20f3a1228b1655a9/biz.aQute.bndlib/src/aQute/bnd/annotation/headers/RequireCapability.java

https://osgi.org/javadoc/r6/core/org/osgi/resource/Namespace.html#EFFECTIVE_ACTIVE

0 投票
1 回答
51 浏览

eclipse - 是否可以将 bnd 与 maven-bundle-plugin 一起使用来生成 eclipse 功能?

我正在使用 maven-bundle-plugin 为 Eclipse 生成插件。现在我需要生成 Eclipse 功能。我怎样才能实现它?

我不想为此使用 PDE。

0 投票
0 回答
462 浏览

gradle - 使用 bndtools 部署到 OSGi 容器?

我有一个使用 gradle 和 bnd 插件构建的多捆绑项目。依赖管理是通过bnd。我能够在 Eclipse 中启动和运行我的包。

我想知道通过 bnd 的正确部署工作流程是什么。该release任务将我所有的包放在一个发布存储库中——我只是使用了一个 filerepo——所以我将所有可部署的包放在一个文件夹中。

  • 如何收集正确的依赖项?有 bnd/gradle 任务吗?
  • 使用 Jenkins 进行 CI 构建,如何部署到远程 karaf 或 virgo 容器?
0 投票
2 回答
232 浏览

java - 是否可以使用 maven-bundle-plugin (bnd) 生成 plugin.xml

我知道 maven-bundle-plugin 中的 bnd 使用 POM first 方法来构建 Eclipse 插件。

这是我宁愿而不是使用 Tycho 和 MANIFEST 第一种方法。但是我的插件还需要该plugin.xml文件来定义扩展点。

是否有可能使用 maven-bundle-plugin 或 bnd 来生成这个文件?

0 投票
1 回答
394 浏览

osgi - osgi (bndtools) 中的 Restlet 包无法启动。激活程序错误 com/sun/net/httpserver/HttpHandler

我正在迁移到bndtools一些我创建并在标准 Eclipse 环境中工作的 osgi 插件。我添加了Felix Web ConsoleJetty HTTP Service ,并用Felix等价物 替换了一些Equinox捆绑包。

当我运行一个需要org.restlet.jar的特定包时,该包会解析但不会激活。控制台输出是:

____________________________ 欢迎使用 Apache Felix Gogo

G!2015-05-25 00:06:33.471:INFO:oejs.Server:jetty-7.xy-SNAPSHOT 2015-05-25 00:06:33.545:INFO:oejsh.ContextHandler:started oejsServletContextHandler{/,null} 2015- 05-25 00:06:33.620:INFO:oejs.AbstractConnector:开始 SelectChannelConnector@0.0.0.0:8080 !无法启动捆绑包 org.restlet-2.3.2.v20150501-1520,异常激活器错误 com/sun/net/httpserver/HttpHandler 来自:org.restlet.engine.Engine:registerDefaultConnectors#839

我已经尝试过基于其他问题的解决方案,即这个建议设置运行属性org.osgi.framework.system.packages.extra = com.sun.net.httpserver (大概在我的 bndtools .bnd 文件中)的解决方案,以及另一个建议使用框架侦听器激活Restlet应用程序的解决方案——但这些不适用于我,和控制台输出是一样的。

我仍在学习,我将不胜感激任何导致解决方案的帮助,或者关于bndtoolsEclipse可能提供的任何方法或功能的提示,以帮助我追踪其原因。

顺便说一句,Felix Web Console正在工作,作为同一个插件的必需捆绑包。

这是我的 bndtools 配置:

0 投票
1 回答
73 浏览

java - 为什么 bnd 计算我的捆绑包需要可选服务(*、0..n、ReferenceCardinality.MULTIPLE)?

我的包定义了一个接口,以及一个使用该接口实现来调用它们的组件(如果存在一些......)。

一个很好的类比是 LogService;如果存在一个(或多个),则使用消息调用它们。

这是我的 DS 声明:

所以我希望我的包能够在有或没有该服务实现的情况下进行部署。

然而,这就是日食给我的:

日食要求

为什么?这根本不是要求!这显然是可选的。

我发现这张票似乎在谈论这个问题,但不清楚为什么它被关闭了。如票证中所述,我将此添加到我的 bnd.bnd 中:

-resolve.effective: 活跃;skip:="osgi.service"

0 投票
1 回答
334 浏览

java - 在 osgi 框架中使用阿司匹林发送邮件

我正在尝试发送带有附件的电子邮件,而不使用第 3 方邮件服务器(如 smtp.gmail.com)。

基础/准备

在这个线程中,我按照建议先构造 MimeMessage,然后通过myMailQue.queMail(msg);.

它在测试包中工作正常。我在终端上得到以下输出:

邮件在几秒钟后到达。

问题

当我尝试在我的 OSGi 框架 (felix) 中使用它时,不会发送任何邮件。没有任何异常或任何其他信息打印,即使是上面提到的输出!

我找不到 aspirin-jar 的捆绑版本,所以我自己用 bnd 转换了它。像这样:

我的测试

在我的捆绑文件夹中使用转换后的 jar,没有接线包问题,所以它应该可以工作吗?问题示例:

我调用queMail(msg)的代码能够调用阿司匹林包的其他方法。例如,我在myMailQue.getQueueSize()前后调用一次函数queMail(msg)。结果是 0 和 1,这很有意义(imo)。


我对这种设置不起作用感到非常困惑,尤其是没有任何异常的情况下,很难理解出了什么问题

所以我认为我的测试包和框架之间的唯一区别是转换后的 jar。有谁知道我该如何解决这个问题?

非常感谢您提前


PS这是我在这里的第一个问题(我已经阅读了很多;)所以如果我遗漏了任何重要信息或者我的问题的格式难以理解,请给我一个提示。