0

如果特定捆绑包无法初始化,是否有任何方法可以中止 Knoplerfish 的启动?默认情况下,FrameworkErrorEvent 会打印到控制台,并且框架会继续加载。

初始化.xargs

-initlevel 80
-istart my-required-bundle.jar

控制台输出

[stdout] Installed and started: file:jars/my-required-bundle.jar (id#34)
[stdout] ## DEBUG: errors - FrameworkErrorEvent bundle #34
[stdout] ## DEBUG: errors - FrameworkErrorEvent throwable:
[stderr] org.osgi.framework.BundleException: BundleActivator start failed
4

1 回答 1

0

没有标准的 OSGi 方法可以做到这一点,因为没有标准的方法来告诉框架要安装哪些包(这取决于启动器)。也没有标准的方式来获得此事件的通知,因此您可以对其采取行动。如果 Knopflerfish 没有提供特定的系统属性或类似的东西来处理这个问题,我看到你可以采取两条路线。

  • 构建自己的启动器。实例化 a org.knopflerfish.framework.Main,配置它(在自述文件中有一些信息),然后通过BundleContext从框架中获取 a 来安装包。然后,您可以捕获BundleException来自 bundlestart()方法的 s,并在它具有 type 时中止启动RESOLVE_ERROR
  • 创建一个等待特定时间的捆绑包,然后检查框架以查看是否所有捆绑包都已启动(您可以从 获取所有当前安装的捆绑包的列表BundleContext)。如果其中一个不在 state 中INSTALLED,您可以通过停止系统捆绑包(即捆绑包 0)来停止框架。
于 2011-07-13T17:42:05.243 回答