所以我的问题很简单就是:
我想在默认目录中使用特定的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。不知道为什么,但我认为这是一个迹象,我必须使用一些解决方法。
答案 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