gpt4 book ai didi

java - 使用 osgi 访问包内的公共(public)属性文件

转载 作者:塔克拉玛干 更新时间:2023-11-01 22:31:18 27 4
gpt4 key购买 nike

我有一个带有多个包的 osgi 应用程序(在 felix 中)。一个 bundle 中有一些公共(public)属性文件,其余 bundle 只需要使用它们即可。

我们使用 maven 和 spring osgi,属性文件位于如下资源中:

<path to bundle>/src/main/resources/
common.properties
engine.properties
...

Maven 通常在 bundle jar 中构建它们,因此它们应该在应用程序类路径中,但 Spring 无法访问它们,这失败了:

<context:property-placeholder location="classpath:common.properties" />

(尝试类路径*:和其他组合)

我读过 thisthis

这真的是 osgi 意识形态的一些全局性问题,没有标准的方法来让它工作吗?只有像 that 这样的黑客和解决方法或 <osgix:cmProperties...>

它之所以令人担忧,是因为它使部署变得更加困难且容易出错:您不能仅使用 mvn deploy 在 jar 中部署属性文件。与正常应用程序一样,您必须在每次发布时手动将它们复制到生产箱中。

最佳答案

对于 OSGi,没有通用的应用程序类路径。尽管属性位于包含它们的包的类路径中,但它们不一定位于使用它们的包的类路径中。

它有点难看,但通常导出包含属性文件夹的“包”将使它们可以访问。在这种情况下,它看起来像是“.”,这非常丑陋,但您可以将它们放在“属性”目录中(比方说),然后导出一个属性包。使用这些属性的包也需要导入属性包。

或者,使用包含包的类加载器来查找资源也可以,尽管我无法评论它的 Spring 配置是什么样的。

关于java - 使用 osgi 访问包内的公共(public)属性文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10639128/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com