如何在代码中执行 osgi 命令

How can I execute osgi command in code

我正在使用 Equinox。我想在代码中执行 osgi 命令。

例如。安装捆绑命令

public void start(BundleContext context) throws Exception {

    String cmd = "install file:///e://testBundle.jar"

    // How can I execute cmd in code?
    ...
}

感谢帮助

您可以通过 BundleContext 或 Bundle 的实例管理捆绑包:

  1. BundleContext.installBundle 允许您从 URL

  2. 安装一个包
  3. 您可以找到一个带有 BundleContext 的 Bundle 实例。参见示例 BundleContext.getBundles()。在 Bundle 实例上,您可以调用 start()stop()update()uninstall()

参见:BundleContext and Bundle

如果您真的想访问 shell 并执行命令,Equinox 使用 Apache Felix Gogo Shell。您应该获得对 CommandProcessor 的引用,从此处理器创建 CommandSession,并在此会话上调用 execute

@Reference
CommandProcessor commandProcessor;

...

CommandSession commandSession = commandProcessor.createSession(System.in, System.out, System.err);
commandSession.execute("..");