尝试通过ResourcesPlugin获取工作区时出现此错误:
java.lang.IllegalStateException: Workspace is closed.
at org.eclipse.core.resources.ResourcesPlugin.getWorkspace(ResourcesPlugin.java:339)
生成此代码的代码是:
IWorkspace ws = ResourcesPlugin.getWorkspace();
你能帮忙解决这个问题吗?
答案 0 :(得分:15)
您的Manifest.MF
是否包含org.eclipse.core.resources
部分中的Require-bundle
?
您是否将测试作为插件启动? (而不是'Java应用程序')
另见this thread。
如“Resources and the file system”帮助页面所述,
您可以从资源插件类(在
org.eclipse.core.resources
中定义)访问工作区。当资源插件未运行时,工作空间仅存在于文件系统中,并由用户通过基于标准文件的工具进行查看或操作。我们来解释资源插件API时,让我们看看磁盘上的工作区是什么样的。
来自this book:
无论使用
-data
调用选项定义的名称,工作区目录都有两个角色:
- 它充当
的父级.metadata
目录- 并作为项目的默认位置
工作空间只能在以下情况下包含项目:
org.eclipse.core.resources
插件包含在配置中- 并从工作台
开始这是基于
org.eclipse.ui.ide.workbench
应用程序的IDE配置自动生成的。
另见this thread并记住:
工作空间是与用于测试插件的运行时工作空间不同的工作空间。当您在Eclipse PDE环境中运行时,它会创建一个完全为空的新工作空间。
测试workspace root can be specified through the "-data"启动选项。
如果您想访问文件,最好将其包含在插件本身中,然后使用
getClass().getResourceAsStream("/myfile.txt")
获取可以阅读内容的InputStream
。
答案 1 :(得分:0)
尝试在插件中调用Plugin.getStateLocation()
,它应该会为您创建工作区。如果没有这个,你也无法保存任何偏好。 http://dev.eclipse.org/newslists/news.eclipse.platform/msg45020.html
呃,对不起 - 我刚刚意外地完成了这个问题:)