尝试通过ResourcesPlugin获取工作区时,"Workspace已关闭"异常

Jen*_*ith 11 eclipse workspace resources plugins

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

java.lang.IllegalStateException: Workspace is closed.
at org.eclipse.core.resources.ResourcesPlugin.getWorkspace(ResourcesPlugin.java:339)
Run Code Online (Sandbox Code Playgroud)

生成它的代码是:

IWorkspace ws = ResourcesPlugin.getWorkspace();
Run Code Online (Sandbox Code Playgroud)

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

Von*_*onC 15

你是否Manifest.MF包含org.eclipse.core.resources在该Require-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你可以读取内容的文件.