IllegalStateException возникает при установке функции с заархивированного сайта обновлений

Я экспериментирую с установкой функции Eclipse с заархивированного сайта обновлений из командной строки. Для этого я использую следующую команду:

eclipsec.exe -nosplash -application org.eclipse.equinox.p2.director -repository jar:file:///d:\Eclipse_Workspaces\update-site-dummy_workspace\com.experiment.updatesite\experiment_update_site_1.0.0.zip!/ -installIU com.experiment.feature.one.feature.group -profile PlatformProfile

Это работает, однако непосредственно перед окончанием процесса установки возникает исключение, подобное этому:

Installing com.experiment.feature.one.feature.group 1.0.0.
java.lang.IllegalStateException: Workbench has not been created yet.
        at org.eclipse.ui.PlatformUI.getWorkbench(PlatformUI.java:92)
        at org.eclipse.equinox.internal.provisional.p2.ui.ProvisioningOperationRunner.requestRestart(ProvisioningOperationRunner.java:171)
        at org.eclipse.equinox.internal.p2.ui.ProvUIActivator$1.notify(ProvUIActivator.java:117)
        at org.eclipse.equinox.internal.p2.core.ProvisioningEventBus.dispatchEvent(ProvisioningEventBus.java:108)
        at org.eclipse.osgi.framework.eventmgr.EventManager.dispatchEvent(EventManager.java:227)
        at org.eclipse.osgi.framework.eventmgr.ListenerQueue.dispatchEventSynchronous(ListenerQueue.java:149)
        at org.eclipse.equinox.internal.p2.core.ProvisioningEventBus.publishEvent(ProvisioningEventBus.java:85)
        at org.eclipse.equinox.internal.p2.engine.SimpleProfileRegistry.broadcastChangeEvent(SimpleProfileRegistry.java:350)
        ....
Operation completed in 1277 ms.

Запрошенная функция установлена, но мне не нравится это исключение - особенно на чьем-то компьютере это будет выглядеть не очень хорошо ;)

Здесь я нашел некоторую информацию об этом исключении: "java.lang.IllegalStateException: Workbench еще не создан

Обычно это происходит, когда кто-то пытается запустить приложение Java для пакета OSGi с помощью java -classpath.... . На самом деле это означает, что подключаемый модуль рабочей среды еще не запущен, и поэтому вызовы getWorkbench() завершаются ошибкой. По сути, это состояние гонки, и его можно решить, либо указав явную зависимость от этого пакета, либо подняв этот пакет до более высокого начального уровня, чем верстак. Как правило, не видел, но если он есть, то это то, что происходит. "

Мой вопрос: Кто-нибудь знает, как обойти это исключение? (например, добавив некоторые параметры vm в команду установки)

PS Я использую Eclipse 3.4 и нет возможности обновить его на что-то более новое.


person Krokodylowy    schedule 20.10.2011    source источник


Ответы (2)


Это вызвано тем, что пакет org.eclipse.equinox.p2.ui активен в вашей среде. По умолчанию вы не запускаете Workbench, поэтому пакет должен находиться в состоянии Resolved в среде выполнения OSGi. Я не уверен, почему этот пакет запускается в вашей среде, вы можете проверить файл configuration/org.eclipse.equinox.simpleconfigurator/bundle.info, пометить пакет как не автозапуск.

person Kane    schedule 21.10.2011
comment
К сожалению, он уже установлен на false. Я не обратил внимание на то, что это плагин пользовательского интерфейса. Поэтому я подумал, что удаление опции -nosplash может быть полезным, но это не так. В любом случае +1 за старание. - person Krokodylowy; 21.10.2011
comment
Хитрость заключается в удалении org.eclipse.equinox.p2.ui из вашего eclipse. Я предлагаю вам использовать последнее затмение (например, 3.7), приложение директора должно поддерживать репозиторий, созданный 3.4. - person Kane; 24.10.2011

Сегодня я немного боролся с этой проблемой, и, наконец, я нашел решение. В команде установки отсутствовал аргумент -destination, поэтому правильный:

eclipsec.exe -nosplash -application org.eclipse.equinox.p2.director -repository jar:file:///d:\Eclipse_Workspaces\update-site-dummy_workspace\com.experiment.updatesite\experiment_update_site_1.0.0.zip!/ -installIU com.experiment.feature.one.feature.group -profile PlatformProfile -destination .
person Krokodylowy    schedule 24.10.2011