1

我正在尝试使OSGi 示例应用程序正常工作,但是在从命令行启动 OSGi 时遇到了麻烦。

请注意,我不想在 Eclipse OSGi 环境中运行包。这工作正常。


首先,我创建了示例包。之后,我尝试在命令行中运行该应用程序。为此,我按照上述文章、官方说明相关问题中的说明运行 OSGi jar :

$ cd
$ cp /usr/local/eclipse/plugins/org.eclipse.osgi_3.8.2.v20130124-134944.jar
     org.eclipse.osgi.jar
$ java -jar org.eclipse.osgi.jar -console

现在,OSGi 似乎运行了,但没有显示控制台。


根据上述文章(见第 4.2 节)和一个相关问题与解决方案,需要以下附加包:

  • org.eclipse.equinox.console
  • org.apache.felix.gogo.command
  • org.apache.felix.gogo.runtime
  • org.apache.felix.gogo.shell

他们失踪了吗?如果是,我如何链接它们?


我的问题:如何在命令行中使用控制台运行 OSGi?

谢谢你的帮助!

编辑 1: $ eclipse -console -noExit关闭 IDE 作为一种解决方法 :-) 遗憾的是,IDE 包也以这种方式加载。

4

2 回答 2

1

这是一个通用命令,可以在 Unix 和 Windows 系统上使用 Equinox 实现。

已安装 Eclipse 2018-12 进行测试,但它也应该适用于其他版本。

进入插件目录

Unix,重击:

java -Dosgi.bundles=\
$(ls -1 org.apache.felix.gogo.shell_*.jar)@start,\
$(ls -1 org.apache.felix.gogo.command_*.jar)@start,\
$(ls -1 org.apache.felix.gogo.runtime_*.jar)@start,\
$(ls -1 org.eclipse.equinox.console_*.jar)@start\
 -jar $(ls -1 org.eclipse.osgi_*.jar) -console

Windows、powershell(仅在控制台模式下工作):

java ('-Dosgi.bundles='+((`
"$(ls org.apache.felix.gogo.shell_*.jar | select -ExpandProperty Name)`@start",`
"$(ls org.apache.felix.gogo.command_*.jar | select -ExpandProperty Name)`@start",`
"$(ls org.apache.felix.gogo.runtime_*.jar | select -ExpandProperty Name)`@start",`
"$(ls org.eclipse.equinox.console_*.jar | select -ExpandProperty Name)`@start"`
) -join ',')) '-jar' "$(ls org.eclipse.osgi_*.jar | select -ExpandProperty Name)" '-console'

Windows、powershell(也适用于 ISE):

Start-Process 'java' -ArgumentList `
(('-Dosgi.bundles=',`
"$(ls org.apache.felix.gogo.shell_*.jar | select -ExpandProperty Name)`@start,",`
"$(ls org.apache.felix.gogo.command_*.jar | select -ExpandProperty Name)`@start,",`
"$(ls org.apache.felix.gogo.runtime_*.jar | select -ExpandProperty Name)`@start,",`
"$(ls org.eclipse.equinox.console_*.jar | select -ExpandProperty Name)`@start",`
" -jar $(ls org.eclipse.osgi_*.jar | select -ExpandProperty Name) -console"
) -join '')

链接到 Eclipse 错误:
错误 371101 - Equinox 控制台无法启动

于 2019-01-21T11:02:36.767 回答
0

一种解决方法是不运行 OSGi Apache Felix 框架的 Equinox 实现,如上述相关问题中所述:

  • 下载框架。
  • 解压框架
  • 运行以下命令:

$ java -jar bin/felix.jar


无论如何,这对我来说似乎是一种解决方法,我仍然对如何从命令行使用 Equinox 框架感兴趣。

于 2013-09-30T14:42:29.633 回答