作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我面临的问题是应用程序部署在由第三方维护的 OSGi 容器上。
我的包中有一些功能可以导入外部包,这些包可能可用也可能不可用。对于 bundle 不可用的情况,我的 bundle 中存在一个客户端 bundle (以帮助避免 ClassNotFound 异常)。在另一种情况下,当包存在时,应该导入包。
这有可能吗?
提前致谢。
最佳答案
让我看看我是否正确理解了这个问题:假设我们正在谈论一些包 foo
。如果您环境中的某个人导出了这个包,您希望完全导入那个包。
[someone-else] --exp--> foo <--imp-- [you]
如果没有人导出包,你自己有一个副本,在你所谓的“客户端包”中;我不太明白你的意思,但我想这意味着你想有条件地导出一些包,所以我们最终会遇到这种情况
[you] --exp--> foo
| ^
| |
-----imp------
所以,你会与自己建立联系。
我还得知您曾尝试自己导出 foo
包,但发现当您这样做时,您无法使用 foo
包中的类与其他包通信.
如果上述情况正确,您可以使用默认的 OSGi 行为。您声明您同时导出和导入一个包,
Export-Package: foo
Import-Package: foo
您现在总是导出包,但 OSGi 解析机制将确保正确连接:
foo
,您将连接到该现有包,并且您自己的导出现在将被“忽略”,并且在这两种情况下,您都连接到其他人都在使用的同一个包,这正是您所需要的。
简而言之,您不必太担心这种情况,通常总是导入您导出的内容。大多数工具( bnd , Apache Felix maven-bundle-plugin )实际上会为你做这件事。如果您手写 list ,您应该研究这些内容以使您的生活更轻松。
关于OSGI:只有在外部存在时才可以导入包,否则使用本地精简版?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4818967/
我是一名优秀的程序员,十分优秀!