2

我有一段时间使用 Equinox 作为 osgi 框架的应用程序。到目前为止,我使用系统属性 osgi.install.area 来指定我的捆绑包的位置

${osgi.install.area}/
  plugins/
     org.eclipse.osgi_3.7.0.v20110613.jar
     ... my app bundles

Equinox 然后自动${osgi.install.area}/configuration用作配置区域。

一切正常。

现在我需要将配置区域移出,${osgi.install.area}因为它可能是只读的,我认为它就像设置${osgi.configuration.area}到合适的路径一样简单,但是当我这样做时,应用程序不再启动,并且我在日志中有以下堆栈跟踪:

java.lang.IllegalStateException: Unable to acquire application service. Ensure that the org.eclipse.core.runtime bundle is resolved and started (see config.ini).
    at org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.start(EclipseAppLauncher.java:74)
    at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:344)
    at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:179)
    at org.eclipse.core.runtime.adaptor.EclipseStarter.main(EclipseStarter.java:150)
...  

使用该路径是因为在该位置创建了日志文件和一个目录"org.eclipse.osgi"

config.ini我喜欢这样引用捆绑包的路径:

osgi.bundles=de.mycomp.app-0.6.0.20121116-1834.jar@start, ...

错误消息并没有真正提示在哪里查看。这一定是相当简单的事情,但我现在相当无能。

提前致谢,

罗伯特

4

1 回答 1

2

.ini我测试了更改现有 osgi 应用程序的配置区域,并且它可以在安装根目录的文件中使用以下参数。你确定你像这样正确设置配置参数:

-Dosgi.configuration.area=c:\mytest

完成此操作并再次运行应用程序后,它创建了文件夹和新配置。

这是我的.ini有效文件的副本,osgi params 和 vm args 也很重要。

-loglevel=trace
-vmargs
-Dosgi.configuration.area=c:\mytest
-Dorg.osgi.service.http.port=8094
-Declipse.ignoreApp=true
-Dosgi.noShutdown=true
-Dequinox.ds.print=true
于 2012-11-18T05:57:27.413 回答