Хотите, чтобы Eclipse использовал определенный config.ini, но установил другую область конфигурации - PullRequest
0 голосов
/ 29 ноября 2010

Итак, моя проблема вкратце такова:

Я хочу запустить свою программу на основе eclipse с определенным файлом config.ini, который не в каталоге по умолчанию, т.е. это не в ../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, так как они работают во втором сценарии.

Для этого есть несколько способов, но сначала я попробуючтобы увидеть, есть ли способ сделать эту работу, как мы хотим в первую очередь.

Обновление: Следуя предложенному Канесом предложению ниже, я обнаружил, что загружается только один пакет, org.eclipse.osgi_3.6.0.v20100517.Когда я изучил код затмения в grepcode , который выдает исключение, я обнаружил следующую строку:

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

Итак, мой runnable равен нулю.Не знаю почему, но я думаю, что это признак того, что я должен использовать какой-то обходной путь.

1 Ответ

1 голос
/ 30 ноября 2010

Во-первых, вы должны добавить 'osgi.bundles' в качестве аргумента vm. Сообщение об ошибке вызвано тем, что пакеты не установлены в платформу OSGi, за которую отвечает пакет 'org.eclipse.equinox.simpleconfigurator' с момента затмения 3.4.

-Dosgi.bundles=file/<eclipsedir>/plugins/org.eclipse.equinox.simpleconfigurator_1.0.200.v20100503.jar@1\:start
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...