问题标签 [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 - 私有包清单标头有什么作用?
我熟悉Import-Package
and Export-Package
,但这对我来说是一个新的。它有什么作用?
osgi - bndtools 激活包
如何在 bndtools 中使用 Activator 创建一个简单的捆绑包?它一直在说:
我在 Eclipse 中创建这个项目的方式是:
- 创建新的“Bndtools OSGi 项目”
- 右键单击,配置 - 转换为 Maven 项目
Activator.java
在包中创建com.myproj
。- 添加
com.myproj
到私人包 - 将激活器设置为
com.Activator
这是我的 bnd 文件:
我生成的 jar 是空的。有小费吗?
PS:这是我的 Eclipse 项目(导出为 zip 存档),以防它对事物有所启发:https ://dl.dropbox.com/u/9162958/scraper.zip
java - 如何从 osgi 中的字节反序列化对象
在我的 osgi 应用程序中,我有三个包travel.api
,table.api
和utils
. travel.api
取决于table.api
取决于utils
。请注意,travel.api
它不直接依赖于utils
. 我使用 aQute Bnd 来生成清单,我相信它工作正常。清单如下所示。
有一个类叫做PageData
,它有一个类型的字段TableData
,而它又有一个类型的字段TestObject
。PageData
位于travel.api
,TableData
位于table.api
,TestObject
位于utils
. 加载捆绑包时,这一切都可以正常工作。当我收到一个表示PageData
对象的字节数组时,问题就来了。我必须在travel.api
捆绑包中反序列化它。这不应该是一个问题,因为这是定义它的地方。我使用org.jboss.netty.handler.codec.serialization.ObjectDecoderInputStream
并从travel.api
包中传递类加载器。下面显示的异常被抛出,但基本上它说:
现在这是有道理的,因为如果您查看Import-Package
fortravel.api
您会看到(位于com.openaf.utils
哪里)没有列出。TestObject
如果我添加这个包,那么它会被正确反序列化。但是,这似乎不是一个好的通用解决方案,因为我必须遍历PageData
使用的每个字段并确保它们都导入到此模块中,并递归地导入这些字段包含的每个字段等。
我在这里做错了什么吗?
使用 OSGi 时反序列化对象的最佳方法是什么?
如果我做得正确并且我必须指定所有“深度”导入,有没有办法让 Bnd 进行“深度”生成?
任何帮助将不胜感激!
我使用 felix v4 作为我的 osgi 库。
谢谢,尼克。
java - OSGi 中的传递依赖
我NoClassDefFoundError
在运行时得到一个,我认为该"uses"
指令会避免这种情况,因为我认为它创建了传递性(如果我错了,请纠正我)。这是我的配置:
现在,当 Bundle 3 调用B中的类,而后者又调用A中的类时,就会发生异常。基于控制台,我可以看到BundleClassLoader
在捆绑包 3 中查找类(换句话说,在其本身),但在捆绑包 1 中找不到它。如果我强制 BND 在 Bundle 3 中导入 A 一切正常,但它看起来太费力了。我觉得我错过了一些东西。Equinox 不应该使用清单中的信息来设置捆绑类路径吗?或者在最坏的情况下,BND 不应该检测 3 对 1 的依赖并在 3 的清单中导入包 A 吗?
我所有的捆绑包都是active
并且我没有uses
违反约束
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
maven - 如何使用包含来自 OSGi 片段的非代码资源的 maven 构建 OSGi 包?
我有一个包含非代码资源的 OSGi 片段——它实际上是一个包含一组资源(图像文件等)的 jar 文件——我用 maven 构建的。
我想用 maven 构建另一个包,它依赖于带有资源的片段。也就是说,当这个包中的代码被执行时,我希望我的片段中的资源被加载并可以通过 Java 的 getResources() 命令获得。
我怎样才能做到这一点?
configuration - 如何使用 BND 为配置创建默认布尔值
我正在使用 BND 注释来帮助创建由 OSGI cm 管理的配置。
这是我的简单配置
我已经多次使用 BND 配置注释库,但这是我第一次想使用布尔类型。
我已经阅读了这个
为了方便起见,它讨论了基于整数或其他替代数字的布尔值处理。问题是 deflt 方法总是返回一个字符串值,如果我的类型是一个整数,我会做“2”(这些被解析)。但是直到这个分配点,布尔值似乎没有在可配置的 BND 代码中被解析。
我想进一步知道为什么当 deflt 值甚至从未被解析时返回 true。我希望这会更严格地遵循规范并返回 false,因为 cm 会尝试执行 Boolean.parseFrom,所以任何不“真”等于忽略大小写的东西都是假的。
所有这一切都不是完全失败,因为如果我通过 cm 更改值,它会在设置为 true 后正常工作,然后再次设置为 false,但显然这只是想知道它是否会起作用。
只是我想知道是否有人知道如何使用 BND 的配置注释设置 BOOLEAN 默认值。
谢谢
java - 所需捆绑包的状态已解决而不是活动
我有一个依赖于捆绑包 B 的捆绑包 A。当捆绑包 A 中的代码运行并从捆绑包 B 访问一个类时,捆绑包 B 的状态被解析(4)而不是活动(32)并且捆绑包 B 的激活器没有也跑。我认为捆绑 B 的清单有问题,但我不能完全发现它。
这是捆绑 B 的清单,由 bnd 生成。
这是使用 PDE 生成的 bundle A 的清单。
java - Bndtools 输出到控制台
我刚刚开始为我的 OSGi 项目使用 bndtools,但我似乎无法配置项目以将信息输出(Hibernate 信息、Spring DM 信息)输出到控制台(在 Eclipse 中)。我在这个项目上遇到了困难,因为我没有得到任何反馈,而且似乎没有创建日志文件。
爱
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 任务,我会收到以下错误:
我在这里遗漏了一些明显的东西吗?如果有人能指出我正确的方向,那将是一个很大的帮助。