我有一个应用程序,它现在使用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, ...
错误消息并未真正提示要查找的位置。它必须是相当简单的东西,但我现在很无能为力。
提前致谢,
罗伯特
答案 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