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

Наши продукты используют последнюю готовую к выпуску версию 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, а не в конечных приложениях - тем не менее, я удалил рабочие пространства и папки времени выполнения. Ничего не помогает "Ошибка" также появляется в экспортируемом продукте, но, насколько я могу судить, все по-прежнему работает, как и ожидалось.

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

9 ответов

Решение

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

Я решил проблему, выполнив эти простые шаги,

  1. Перейдите в каталог eclipse и откройте каталог конфигурации.
  2. Откройте каталог org.eclipse.osgi.
  3. Откройте папку.manager.
  4. Удалить файл.fileTableLock.
  5. Перезапустите свое затмение.

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

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

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

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

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

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

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

2) eclipse \ configuration *.log

после этого я открыл затмение, оно работало без перезагрузки компьютера.

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

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

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

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

затмение - чистое

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

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

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

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

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

Столкнулся с той же проблемой. Удалите .fileTableLock из "eclipse\configuration\org.eclipse.osgi.manager" и перезапустите eclipse. Оно работает .

Другие вопросы по тегам