Подтвердить что ты не робот

Не удалось получить блокировку изменения состояния

В наших продуктах используется последний выпуск готовой продукции SWT, 3.7.2. Теперь, когда никто тогда не знал, как будет вызываться следующая Java-версия (и как они узнают, что 8 пришли после 7, что, как и высшая математика), мы были вынуждены заменить org.eclipse.osgi с 3.7.2 на 3.10.0, так что теперь мы можем поддерживать Java 8. Хотя это, возможно, не лучшая идея, теоретически она должна работать.

Конечно, будучи главной причиной того, что Eclipse Luna, есть эта "ошибка", когда мы запускаем наши приложения (примерно в 50% случаев, я бы предположил):

org.osgi.framework.BundleException: Unable to acquire the state change lock for the module: osgi.identity; osgi.identity="org.eclipse.osgi"; type="osgi.bundle"; version:Version="3.10.0.v20140606-1445"; singleton:="true" [id=0] STARTED [STARTED] invalid
at org.eclipse.osgi.container.Module.lockStateChange(Module.java:329)
at org.eclipse.osgi.container.SystemModule.init(SystemModule.java:44)
at org.eclipse.osgi.container.SystemModule.start(SystemModule.java:170)
at org.eclipse.osgi.internal.framework.EquinoxBundle.start(EquinoxBundle.java:393)
at org.eclipse.osgi.internal.framework.EquinoxBundle.start(EquinoxBundle.java:412)
at org.eclipse.equinox.internal.simpleconfigurator.ConfigApplier.startBundles(ConfigApplier.java:307)
at org.eclipse.equinox.internal.simpleconfigurator.ConfigApplier.install(ConfigApplier.java:108)
at org.eclipse.equinox.internal.simpleconfigurator.SimpleConfiguratorImpl.applyConfiguration(SimpleConfiguratorImpl.java:129)
at org.eclipse.equinox.internal.simpleconfigurator.SimpleConfiguratorImpl.applyConfiguration(SimpleConfiguratorImpl.java:143)
at org.eclipse.equinox.internal.simpleconfigurator.Activator.start(Activator.java:48)
at org.eclipse.osgi.internal.framework.BundleContextImpl$3.run(BundleContextImpl.java:771)
at org.eclipse.osgi.internal.framework.BundleContextImpl$3.run(BundleContextImpl.java:1)
at java.security.AccessController.doPrivileged(Native Method)
at org.eclipse.osgi.internal.framework.BundleContextImpl.startActivator(BundleContextImpl.java:764)
at org.eclipse.osgi.internal.framework.BundleContextImpl.start(BundleContextImpl.java:721)
at org.eclipse.osgi.internal.framework.EquinoxBundle.startWorker0(EquinoxBundle.java:936)
at org.eclipse.osgi.internal.framework.EquinoxBundle$EquinoxModule.startWorker(EquinoxBundle.java:319)
at org.eclipse.osgi.container.Module.doStart(Module.java:571)
at org.eclipse.osgi.container.Module.start(Module.java:439)
at org.eclipse.osgi.container.ModuleContainer$ContainerStartLevel.incStartLevel(ModuleContainer.java:1582)
at org.eclipse.osgi.container.ModuleContainer$ContainerStartLevel.incStartLevel(ModuleContainer.java:1562)
at org.eclipse.osgi.container.ModuleContainer$ContainerStartLevel.doContainerStartLevel(ModuleContainer.java:1533)
at org.eclipse.osgi.container.SystemModule.startWorker(SystemModule.java:242)
at org.eclipse.osgi.container.Module.doStart(Module.java:571)
at org.eclipse.osgi.container.Module.start(Module.java:439)
at org.eclipse.osgi.container.SystemModule.start(SystemModule.java:172)
at org.eclipse.osgi.internal.framework.EquinoxBundle.start(EquinoxBundle.java:393)
at org.eclipse.osgi.internal.framework.EquinoxBundle.start(EquinoxBundle.java:412)
at org.eclipse.osgi.launch.Equinox.start(Equinox.java:115)
at org.eclipse.core.runtime.adaptor.EclipseStarter.startup(EclipseStarter.java:320)
at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:232)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:483)
at org.eclipse.equinox.launcher.Main.invokeFramework(Main.java:622)
at org.eclipse.equinox.launcher.Main.basicRun(Main.java:577)
at org.eclipse.equinox.launcher.Main.run(Main.java:1410)
at org.eclipse.equinox.launcher.Main.main(Main.java:1386)

В Интернете не так много информации о том, в чем проблема, большинство из них предлагает просто удалить рабочую область, но для большинства это происходит только при запуске Eclipse, а не в конечных приложениях - тем не менее, я удалял рабочие пространства и папки времени выполнения. Ничто не помогает. "Ошибка" также попадает в экспортируемый продукт, но, насколько я могу судить, все работает, как и ожидалось.

Есть ли способ исправить это? А если нет, есть ли способ скрыть это глупое исключение (отключить ведение журнала на мгновение, очистить журнал, что бы то ни было, я не придирчивый)?

4b9b3361

Ответ 1

Похоже, что запуск фрейма запускает simpleconfigurator, который пытается снова запустить фреймворк. Структура обнаруживает эту рекурсию и выдает исключение, чтобы избежать ее. Проблема заключается в том, что в simpleconfigurator пытается запустить фреймворк, который его запускает.

Ответ 2

Я решил проблему, выполнив следующие простые шаги:

  • Перейдите в каталог eclipse и откройте каталог конфигурации.
  • открыть каталог org.eclipse.osgi.
  • открыть папку .manager.
  • Удалить файл .fileTableLock.
  • Перезапустите ваше затмение.

Ответ 3

Я столкнулся с такой же проблемой. Выделение данного файла .log из папки конфигурации и перезапуск eclipse должно решить вашу проблему.

Ответ 4

Я использую Red Hat Developer Studio 10.4 (Eclipse 4.6), и я попробовал использовать плагин Eclipse Checkstyle.

После установки я перезапустил свою IDE и получил уведомление о сбое.

Я пробовал все предложения, но только когда я удалял файл с именем framework.info.34, моя проблема была решена.

Этот файл находится в папке %eclipse_home%/configuration/org.eclipse.osgi.

Ответ 5

Всплывающее окно проблемы после обновления eclipse neon через сайт обновлений вместе с установкой некоторых новых плагинов.

Шаг 01: Я удалил .fileTable. * Заблокировал файлы из каталога ${eclipse_home}/configuration/org.eclipse.osgi/.manager.

Шаг 02: Удаленный кеш osgi и другой кеш плагинов, начав в чистом режиме eclipse

eclipse -clean

Ответ 6

У меня такая же проблема,

я удалил файлы из соответствующих мест 1) "eclipse\configuration\org.eclipse.osgi.manager" .fileTableLock .fileTable3 .fileTable4

2) eclipse\configuration *.log

после этого я открыл eclipse, он работал без перезагрузки ПК.

Ответ 7

для людей, у которых есть эта проблема до запуска eclipse во время выполнения из eclipse: чистая папка: [YourEclipseSourceWorkspace]/. Метаданные /.plugins/org.eclipse.pde.core/[yourRunConfiguration]/org.eclipse.osgi/.manager [yourEclipseSourceWorkspace]/. метаданные /.plugins/org.eclipse.pde.core/[yourRunConfiguration]/org.eclipse.osgi удаляют все файлы (не папки) затем добавьте в свою конфигурацию -clean в качестве аргумента программы

Ответ 8

Решение простое. просто начните затмение в чистом режиме.

  1. Найдите расположение файла "eclipse.exe". (Предположим, что: C:\eclipse\eclipse.exe)

  2. Перейти к команде run (Windows + R)

  3. Введите [местоположение] + [пробел] [-] очистить

    Пример: C:\eclipse\eclipse.exe -clean

enter image description here