【问题标题】:"Workspace is closed" exception when trying to get the workspace through ResourcesPlugin尝试通过 ResourcesPlugin 获取工作区时出现“工作区已关闭”异常
【发布时间】:2010-11-01 00:47:44
【问题描述】:

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

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

生成这个的代码是:

IWorkspace ws = ResourcesPlugin.getWorkspace();

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

【问题讨论】:

  • Jut 完成了我的回答,并提供了有关工作空间特征的更多详细信息。

标签: eclipse plugins resources workspace


【解决方案1】:

您的Manifest.MF 是否在Require-bundle 部分中包含org.eclipse.core.resources

您是否将测试作为插件启动? (不是作为“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,你可以读取它的内容。

【讨论】:

  • Manifest.MF 文件在 Require-bundle 部分包含 org.eclipse.core.resources。但我不想将应用程序作为插件运行。我不是想创建一个插件。只是为了在 Eclipse 中使用 AST 解析器。我可以解决这个问题并仍然将 java 程序作为应用程序运行吗?
  • 作为 Java 应用程序,您不能使用 ResourcesPlugin 函数。所以你需要通过更经典的文件资源来访问资源。
  • 另外,我忘了说我自己找到了第一个网页并做了那里的任何建议。 Ans仍然没有工作。如果我使用 org.eclipse.core.resources 中的 ResourcesPlugin 类,则在 getWorkspace() 方法中,工作空间为空。这就是抛出异常的原因。为什么会这样?工作区设置在哪里?
【解决方案2】:

尝试在插件中调用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

呃,对不起——我刚刚完成了这个问题,不小心把这个问题搞定了:)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多