设置osgi.configuration.area打破了我的Equinox OSGI应用程序

时间:2012-11-16 18:32:24

标签: osgi equinox

我有一个应用程序,它现在使用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, ...

错误消息并未真正提示要查找的位置。它必须是相当简单的东西,但我现在很无能为力。

提前致谢,

罗伯特

1 个答案:

答案 0 :(得分:2)

我测试了更改现有osgi应用程序的配置区域并且它工作正常,安装根目录中的.ini文件中有以下参数。您确定要正确设置配置参数:

-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