OSGi控制台未在命令行中显示

时间:2013-09-29 15:35:50

标签: java osgi

我正在尝试使用OSGi example application,但是从命令行启动OSGi时遇到了麻烦。

请注意,我不想在Eclipse OSGi环境中运行该包。这很好。


首先,我创建了示例包。之后,我尝试在命令行中运行该应用程序。为此,我按照上述文章official instructionsrelated question中所述运行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节)和a related question with solution,需要以下附加包:

  • 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捆绑包也是以这种方式加载的。

2 个答案:

答案 0 :(得分:1)

这是一个通用命令,可使其与Unix和Windows系统上的Equinox实现一起使用。

已通过安装Eclipse 2018-12进行了测试,但是它也可以与其他版本一起使用。

转到插件目录

Unix,bash:

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错误:
Bug 371101 - Equinox console doesn't start

答案 1 :(得分:0)

解决方法是不按照前面提到的Apache Felix Framework中所述运行OSGi related question的Equinox实现:

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

$ java -jar bin/felix.jar


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