1
|
Paul Whelan · 技术社区 · 14 年前 |
![]() |
1
1
你能试着在一个交互式的osgi会话中安装它吗?
您可以诊断该问题:
并安装丢失的依赖项,前提是您知道在哪里获取jar
|
![]() |
2
2
以下是我必须做的,以使这项工作。 我不得不将com.sun.management添加到系统包的systemproperties值中,因为我是osgi新手,所以花了一段时间才弄清楚。我使用maven pax插件,因此需要添加以下属性。默认情况下不起作用的原因是Equinox我选择的OSGi容器默认情况下不包括系统包中的com.sun.*包。 从bundle 0命令的系统包来看,这是显而易见的,因为bundle 0始终是对我来说是新的系统包。
添加此命令后,系统包包括com.sun.management和已部署的My Bundle,没有问题。 默认情况下,equinox不将com.sun包包含在systemproperties中的原因参见 here . (直接调用Sun.*包的Java程序不能保证在所有Java兼容平台上工作。事实上,即使在同一平台上的未来版本中,这样的程序也不能保证工作。) 因此,有两个选项可以将com.sun添加到osgi容器中。 解决方案A”:扩展包 它们充当碎片;它们不是自己的捆束,而是附着在宿主上。扩展包是一种特殊的片段,它只附加到系统包上,以便交付框架的可选部分。可以使用此机制创建一个空扩展,该扩展只声明所需的包,而将加载留给其宿主包(在本例中是框架)。我没有走这条路,因为第二种选择实施起来更快。 解决方案B:启动委派 最后我选择的是引导委派。这允许用户创建总是由框架父类加载器加载的“隐含”包,即使包没有提供正确的导入。我通过将系统包设置为包含com.sun.management来实现。 请看下面的精彩 link 这更详细地描述了整个问题。 |
![]() |
Martin · 如何在上下文中动态添加/删除servlet? 7 年前 |
![]() |
mike · 在OSGi参考注释中动态设置目标属性 7 年前 |
![]() |
Sandy · 驼峰REST DSL-地址已在使用:绑定异常 7 年前 |