Java 如何获取某个OSGI包的配置文件内容
我的结构如下:Java 如何获取某个OSGI包的配置文件内容,java,osgi,bundle,config,Java,Osgi,Bundle,Config,我的结构如下: -- bundles ---- nicebundle ------ src -------- ... -------- nicebundle.config ---------- NiceConfig.java -------- ... ---- mybundle ------ ... ---- another bundles... -- features ---- nicebundle.config.feature ------ rootifles --------
-- bundles
---- nicebundle
------ src
-------- ...
-------- nicebundle.config
---------- NiceConfig.java
-------- ...
---- mybundle
------ ...
---- another bundles...
-- features
---- nicebundle.config.feature
------ rootifles
-------- config.cfg
------ ...
---- another features...
在config.cfg
中有一些常量,我想在mybundle
中使用(在activate()
方法中)。我在NiceConfig.java
中为nicebundle
提供的是NiceConfig@interface
,它只是镜像地列出了.cfg文件中的所有内容,如String importantString()
,并且在.cfg文件中有一个相应的记录:importantString=Hello
对于nicebundle
您只需加载NiceConfig
对象,调用方法并接收所需的常量,如:
@Activate
public void activate(final NiceConfig niceConfig) {
String compositeString = niceConfig.importantString() + " World"; // receive "Hello World"
...
我想要什么-做同样的事情,但在mybundle
中。但是,当我执行相同操作时,niceConfig.importantString()
返回null,而不是“Hello”。我想我错过了一些非常简单和明显的东西,但我的问题是:如何实现.cfg文件的内容,如何定位我在mybundle
中指定的(我无法更改)位置?声明性服务(DS)将强制转换为注释类型,就像您的NiceConfig
类型一样。但组件属性来自和
DS对Eclipse功能中的某些配置文件一无所知。Eclipse特性甚至没有安装包,因此在运行时也不可见
您可以使用的实现将捆绑包中的资源的属性配置到DS组件的相应配置管理配置中。但这需要进行一些结构更改,才能将配置文件从功能部件移动到捆绑包中。简而言之,我的正确答案是执行以下步骤:
[VeryNiceConfig]
,然后在此方括号行后指定所有my参数,例如VeryNiceInt=42
configurationPid=“VeryNiceConfig”,configurationPolicy=configurationPolicy.REQUIRE
添加到@Component
注释中
@interface
对象作为参数添加到我的bundle的activate()
方法中,并将其用于荣耀
这在eclipse中不起作用,因为.cfg文件是通过该功能添加的,并且没有直接注入到eclipse.exe中,但它在maven构建之后(在我的例子中)才起作用。非常感谢您的回答。这间接地让我找到了正确的答案!