希望Eclipse使用特定的config.ini,但设置不同的配置区域

时间:2010-11-29 18:42:08

标签: eclipse osgi

所以我的问题很简单就是:

我想在默认目录中使用特定的config.ini文件运行我的基于eclipse的程序,该文件不是,即../eclipse/configuration/config.ini中的不是但同时我希望配置区域位于不同的位置,即用户主目录。

原因与使用几个不同的config.ini文件和保存文件的配置区域是只读的有关。

使用

启动工具时
${JAVA_HOME}/bin/java 
-Dosgi.baseConfiguration.area=$INSTALLATION/$CONFIGURATION/eclipse/configuration\
-jar $INSTALLATION/eclipse/plugins/org.eclipse.equinox.launcher_1.1.0.v20100507.jar \

这在我的config.ini(以及其他内容)中:

 osgi.configuration.area=@user.home/tmp/eclipse_data/

我得到了我想要的几乎所有内容:使用了正确的config.ini文件,该工具开始将数据缓存到正确的位置并且只在那里。但由于该工具没有启动的小缺点...我收到错误消息:

!ENTRY org.eclipse.osgi 4 0 2010-11-29 19:17:06.914 !MESSAGE Application error !STACK 1 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:369) at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:179)

如果我改为

${JAVA_HOME}/bin/java -Dawt.toolkit=sun.awt.X11.XToolkit \
-Dosgi.configuration.area=$INSTALLATION/$CONFIGURATION/eclipse/configuration \
-jar $INSTALLATION/eclipse/plugins/org.eclipse.equinox.launcher_1.1.0.v20100507.jar \

该工具有效,但开始将数据保存到我的写保护区域。

我的config.ini文件中的bundle定义不是问题,因为它们适用于第二种情况。

这有几种解决方法,但首先我要试着看看是否有办法使这项工作像我们想要的那样。

更新:根据下面的Kanes建议,我发现只加载了一个捆绑包,org.eclipse.osgi_3.6.0.v20100517。当我检查grepcode中抛出异常的eclipse代码时,我找到了这一行:

if (failOnNoDefault && runnable == null)
throw new IllegalStateException(EclipseAdaptorMsg.ECLIPSE_STARTUP_ERROR_NO_APPLICATION);

所以我的runnable是null。不知道为什么,但我认为这是一个迹象,我必须使用一些解决方法。

1 个答案:

答案 0 :(得分:1)

首先,你必须添加'osgi.bundles'作为你的vm参数。错误消息是由于捆绑包未安装到OSGi框架中,该框架是自eclipse 3.4以来bundle'org.eclipse.equinox.simpleconfigurator'的责任。

-Dosgi.bundles=file/<eclipsedir>/plugins/org.eclipse.equinox.simpleconfigurator_1.0.200.v20100503.jar@1\:start