我刚刚开始使用 Eclipse RCP 应用程序,它基本上只是提供的“hello world”示例之一。
当应用程序启动时,我想查看我的命令行参数并根据它们启动一些服务。我可以在以下位置获取命令行参数IApplication.start:
public Object start(IApplicationContext context) {
String[] argv = (String[])
context.getArguments().get(IApplicationContext.APPLICATION_ARGS)));
}
但是我如何获取 BundleContext,以便我可以注册服务呢?它似乎不在 IApplicationContext 中。
刚刚在网络搜索中发现了这一点,并认为我应该推广新的标准 OSGi R4.2 方式(由 Eclipse 3.5 附带的 Equinox 提供)。如果您没有激活器,并且不想创建一个激活器来缓存捆绑上下文,则可以使用 FrameworkUtil.getBundle。修改前面的例子:
import org.osgi.framework.FrameworkUtil;
public class ExportClassDigestApplication implements IApplication {
public Object start(IApplicationContext context) throws Exception {
context.applicationRunning();
BundleContext bundleContext = FrameworkUtil.getBundle(this.getClass())
.getBundleContext();
}
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)