问题标签 [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 投票
3 回答
5249 浏览

java - 私有包清单标头有什么作用?

我熟悉Import-Packageand Export-Package,但这对我来说是一个新的。它有什么作用?

0 投票
2 回答
2358 浏览

osgi - bndtools 激活包

如何在 bndtools 中使用 Activator 创建一个简单的捆绑包?它一直在说:

我在 Eclipse 中创建这个项目的方式是:

  1. 创建新的“Bndtools OSGi 项目”
  2. 右键单击,配置 - 转换为 Maven 项目
  3. Activator.java在包中创建com.myproj
  4. 添加com.myproj到私人包
  5. 将激活器设置为com.Activator

这是我的 bnd 文件:

我生成的 jar 是空的。有小费吗?

PS:这是我的 Eclipse 项目(导出为 zip 存档),以防它对事物有所启发:https ://dl.dropbox.com/u/9162958/scraper.zip

0 投票
3 回答
2450 浏览

java - 如何从 osgi 中的字节反序列化对象

在我的 osgi 应用程序中,我有三个包travel.apitable.apiutils. travel.api取决于table.api取决于utils。请注意,travel.api它不直接依赖于utils. 我使用 aQute Bnd 来生成清单,我相信它工作正常。清单如下所示。

有一个类叫做PageData,它有一个类型的字段TableData,而它又有一个类型的字段TestObjectPageData位于travel.api,TableData位于table.api,TestObject位于utils. 加载捆绑包时,这一切都可以正常工作。当我收到一个表示PageData对象的字节数组时,问题就来了。我必须在travel.api捆绑包中反序列化它。这不应该是一个问题,因为这是定义它的地方。我使用org.jboss.netty.handler.codec.serialization.ObjectDecoderInputStream并从travel.api包中传递类加载器。下面显示的异常被抛出,但基本上它说:

现在这是有道理的,因为如果您查看Import-Packagefortravel.api您会看到(位于com.openaf.utils哪里)没有列出。TestObject如果我添加这个包,那么它会被正确反序列化。但是,这似乎不是一个好的通用解决方案,因为我必须遍历PageData使用的每个字段并确保它们都导入到此模块中,并递归地导入这些字段包含的每个字段等。

我在这里做错了什么吗?

使用 OSGi 时反序列化对象的最佳方法是什么?

如果我做得正确并且我必须指定所有“深度”导入,有没有办法让 Bnd 进行“深度”生成?

任何帮助将不胜感激!

我使用 felix v4 作为我的 osgi 库。

谢谢,尼克。

0 投票
1 回答
334 浏览

java - OSGi 中的传递依赖

NoClassDefFoundError在运行时得到一个,我认为该"uses"指令会避免这种情况,因为我认为它创建了传递性(如果我错了,请纠正我)。这是我的配置:

现在,当 Bundle 3 调用B中的类,而后者又调用A中的类时,就会发生异常。基于控制台,我可以看到BundleClassLoader在捆绑包 3 中查找类(换句话说,在其本身),但在捆绑包 1 中找不到它。如果我强制 BND 在 Bundle 3 中导入 A 一切正常,但它看起来太费力了。我觉得我错过了一些东西。Equinox 不应该使用清单中的信息来设置捆绑类路径吗?或者在最坏的情况下,BND 不应该检测 3 对 1 的依赖并在 3 的清单中导入包 A 吗?

我所有的捆绑包都是active并且我没有uses违反约束

0 投票
1 回答
833 浏览

osgi - 在 bnd-cache 中找不到捆绑包

我对 bndtools 有疑问。解析完成没有问题,但是在我单击运行描述符中的“运行 OSGi”后,出现以下问题:

Status ERROR: bndtools.core code=0 jena-arq~;version=[2.9.4,2.9.5) Not found in [bnd-cache, aQute.lib.deployer.obr.LocalOBR@1fef0b44, aQute.lib.deployer.obr.OBR@6ccadbd, aQute.lib.deployer.obr.LocalOBR@67a256c7, aQute.lib.deployer.obr.OBR@2d52912f] null

0 投票
1 回答
646 浏览

maven - 如何使用包含来自 OSGi 片段的非代码资源的 maven 构建 OSGi 包?

我有一个包含非代码资源的 OSGi 片段——它实际上是一个包含一组资源(图像文件等)的 jar 文件——我用 maven 构建的。

我想用 maven 构建另一个包,它依赖于带有资源的片段。也就是说,当这个包中的代码被执行时,我希望我的片段中的资源被加载并可以通过 Java 的 getResources() 命令获得。

我怎样才能做到这一点?

0 投票
0 回答
301 浏览

configuration - 如何使用 BND 为配置创建默认布尔值

我正在使用 BND 注释来帮助创建由 OSGI cm 管理的配置。

这是我的简单配置

我已经多次使用 BND 配置注释库,但这是我第一次想使用布尔类型。

我已经阅读了这个

为了方便起见,它讨论了基于整数或其他替代数字的布尔值处理。问题是 deflt 方法总是返回一个字符串值,如果我的类型是一个整数,我会做“2”(这些被解析)。但是直到这个分配点,布尔值似乎没有在可配置的 BND 代码中被解析。

我想进一步知道为什么当 deflt 值甚至从未被解析时返回 true。我希望这会更严格地遵循规范并返回 false,因为 cm 会尝试执行 Boolean.parseFrom,所以任何不“真”等于忽略大小写的东西都是假的。

所有这一切都不是完全失败,因为如果我通过 cm 更改值,它会在设置为 true 后正常工作,然后再次设置为 false,但显然这只是想知道它是否会起作用。

只是我想知道是否有人知道如何使用 BND 的配置注释设置 BOOLEAN 默认值。

谢谢

0 投票
1 回答
588 浏览

java - 所需捆绑包的状态已解决而不是活动

我有一个依赖于捆绑包 B 的捆绑包 A。当捆绑包 A 中的代码运行并从捆绑包 B 访问一个类时,捆绑包 B 的状态被解析(4)而不是活动(32)并且捆绑包 B 的激活器没有也跑。我认为捆绑 B 的清单有问题,但我不能完全发现它。

这是捆绑 B 的清单,由 bnd 生成。

这是使用 PDE 生成的 bundle A 的清单。

0 投票
1 回答
220 浏览

java - Bndtools 输出到控制台

我刚刚开始为我的 OSGi 项目使用 bndtools,但我似乎无法配置项目以将信息输出(Hibernate 信息、Spring DM 信息)输出到控制台(在 Eclipse 中)。我在这个项目上遇到了困难,因为我没有得到任何反馈,而且似乎没有创建日志文件。

0 投票
3 回答
3832 浏览

osgi - 使 Sonar Runner Gradle 任务依赖于我的一项任务

我正在尝试最近在 gradle 1.5 中发布的新 Sonar Runner 任务。我想做的是能够使声纳运行器任务依赖于另一个任务,以便我可以为这个项目正确设置声纳属性(即 sonar.sources、sonar.binaries、sonar.libraries、sonar.java.source , sonar.java.target)。

具体来说,我正在使用一个名为 bnd 的 osgi 构建工具,它将在执行 ant init 任务时提供这些值(请注意,虽然我包含了默认的 bnd build.xml 文件,但我的完整构建实际上是使用 gradle 完成的)。

我想我可以通过这样做来自定义声纳运行器任务(这是一个多模块构建):

最终添加这样的东西(根据我对 bnd ant 变量的理解):

不幸的是,当我尝试添加dependsOn时出现错误:

如果我尝试让 sonarRunner 依赖于 gradle 任务,我会收到以下错误:

我在这里遗漏了一些明显的东西吗?如果有人能指出我正确的方向,那将是一个很大的帮助。