Исключение «Рабочая область закрыта» при попытке получить рабочую область через ResourcesPlugin - PullRequest
10 голосов
/ 07 июня 2009

Я получаю эту ошибку при попытке получить рабочее пространство через ResourcesPlugin:

java.lang.IllegalStateException: Workspace is closed.
at org.eclipse.core.resources.ResourcesPlugin.getWorkspace(ResourcesPlugin.java:339)

Код, генерирующий это:

IWorkspace ws = ResourcesPlugin.getWorkspace();

Не могли бы вы помочь с этой проблемой?

Ответы [ 2 ]

15 голосов
/ 07 июня 2009

Содержит ли ваш Manifest.MF org.eclipse.core.resources в разделе Require-bundle?

А вы запускаете свой тест как плагин? (не как «Java-приложение»)

См. Также эту тему .

Как упомянуто на странице справки " Resources and file system ",

Доступ к рабочему пространству можно получить из класса подключаемого модуля ресурсов (определенного в org.eclipse.core.resources).

Когда плагин ресурсов не запущен, рабочая область существует исключительно в файловой системе и просматривается или управляется пользователем с помощью стандартных файловых инструментов. Давайте посмотрим, как выглядит рабочее пространство на диске, когда мы объясним API подключаемого модуля ресурсов.


Из этой книги :

Каталог рабочей области, независимо от имени, определенного с помощью опции вызова -data, имеет две роли:

  • действует как родитель для .metadata каталога
  • и в качестве местоположения по умолчанию для проектов

рабочая область может содержать проекты, только когда:

  • плагин org.eclipse.core.resources включен в конфигурацию и
  • и соответственно запущен из верстака

это автоматически из конфигурации IDE на основе приложения org.eclipse.ui.ide.workbench.

Смотрите также эту тему и помните, что:

рабочее пространство отличается от рабочего пространства рабочего времени, которое используется для тестирования плагинов. Когда вы выполняете команду Run в среде Eclipse PDE, она создает новое рабочее пространство, которое полностью пустое.

Проверка корневого пространства рабочей области может быть указана с помощью опции запуска "-data" .

Если вы хотите получить доступ к файлу, лучше всего включить его в сам плагин, а затем использовать getClass().getResourceAsStream("/myfile.txt"), чтобы получить InputStream, для которого вы можете прочитать содержимое.

0 голосов
/ 22 марта 2010

Попробуйте вызвать Plugin.getStateLocation() в плагине, это должно привести к тому, что рабочая область будет создана для вас. Без этого вы также не сможете сохранить какие-либо настройки. http://dev.eclipse.org/newslists/news.eclipse.platform/msg45020.html

http://help.eclipse.org/help32/index.jsp?topic=/org.eclipse.platform.doc.isv/reference/api/org/eclipse/core/runtime/Plugin.html#getStateLocation%28%29

Извините - я только что закончил этот вопрос случайно:)

...