11

尝试通过 ResourcesPlugin 获取工作区时出现此错误:

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

生成它的代码是:

IWorkspace ws = ResourcesPlugin.getWorkspace();

你能帮忙解决这个问题吗?

4

2 回答 2

15

您是否Manifest.MF包含org.eclipse.core.resourcesRequire-bundle部分?

您是否将测试作为插件启动?(不是作为“Java 应用程序”)

另请参阅此线程

如“资源和文件系统”帮助页面中所述,

您可以从资源插件类(定义在 中org.eclipse.core.resources)访问工作区。

当资源插件未运行时,工作空间仅存在于文件系统中,并由用户通过标准的基于文件的工具查看或操作。在我们解释资源插件 API 时,让我们看看工作空间在磁盘上的样子。


从这本书

无论使用-data调用选项定义的名称如何,工作区目录都有两个角色:

  • 它充当.metadata目录的父级
  • 并作为项目的默认位置

只有在以下情况下,工作区才能包含项目:

  • org.eclipse.core.resources插件包含在配置中,并且
  • 并适当地从工作台开始

这是基于org.eclipse.ui.ide.workbench应用程序的 IDE 配置自动完成的。

另请参阅此线程并记住:

工作区是与用于测试插件的运行时工作区不同的工作区。当您在 Eclipse PDE 环境中运行时,它会创建一个完全为空的新工作区。

可以通过“-data”启动选项指定测试工作区根目录。

如果你想访问一个文件,最好的办法是将它包含在插件本身中,然后使用它getClass().getResourceAsStream("/myfile.txt")来获取一个InputStream你可以读取其内容的文件。

于 2009-06-07T18:01:27.690 回答
0

尝试调用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

呃,抱歉——我刚刚偶然完成了这个问题:)

于 2010-03-22T19:18:51.797 回答