从另一个包中读取 Karaf 中的属性文件

Read Properties File in Karaf From Another Bundle

在 Karaf 中,有没有办法让一个包从另一个包中读取一个属性文件?

我有 bundle1,其中包含 bundle2 使用的一些 类 (bundle1 通过 maven-bundle-plugin 在其 maven pom 中导出包含那些 类 的包,然后 bundle2 导入它)。但是 bundle2 还需要使用来自 bundle1 的属性文件。除了 类,bundle2 有没有办法从 bundle1 访问文件?

根据我的阅读,一种选择是通过功能文件将属性部署到 karaf etc 文件夹,然后可以通过蓝图从 bundle2 访问它。如果可能的话,我想避免这种情况,因为 bundle1 当前未作为功能部署。所以希望有一个替代方法。

最好的方法是通过 bundle1 的 class 包装访问。假设 bundle1 包含一个名为 MyClass 的 class。在此 class 中,您可以执行 this.getClass().getResourceAsStream(path)。路径是相对于class.

包的

因此此 class 的方法可以 return 属性文件的输入流或允许访问实际属性。

事实上,您也可以从 bundle2 访问属性文件。只需使用 bundle2 中 class 中的 MyClass.getResourceAsStream(path)。这是因为每个 class 默认情况下由它所在的包的 classloader 加载。