java - 使用 JDT 解析工作区时出现错误 "Workspace is closed"

标签 java eclipse-plugin abstract-syntax-tree eclipse-jdt

我想编写一个 Java 应用程序来显示工作区中的所有项目名称。但我的程序总是提示如下。

Exception in thread "main" java.lang.IllegalStateException: Workspace is closed.
at org.eclipse.core.resources.ResourcesPlugin.getWorkspace(ResourcesPlugin.java:411)
at myPackage.ProjectVisitor.<init>(ProjectVisitor.java:9)
at myPackage.ProjectVisitor.main(ProjectVisitor.java:16)

以下是我创建自己的应用程序的步骤:

  1. 安装 Java 开发工具 (JDT)

  2. 创建一个满足以下所有选项的空白 eclipse 插件:

    • Eclipse 版本:3.5 或更高版本
    • 执行环境:JavaSE-1.8
    • 是富客户端应用程序吗? (选择)
  3. 添加名为org.eclipse.core.resources_3.10.1.v20150725-1910.jar

    的.jar
  4. 创建ProjectVisitor.java,如下所示。

    import org.eclipse.core.resources.IProject;
    import org.eclipse.core.resources.ResourcesPlugin;
    public class ProjectVisitor {
        public ProjectVisitor() {
            IProject[] projects = ResourcesPlugin.getWorkspace().getRoot().getProjects();
            for (IProject project : projects) {
                // do something to display its name
            }
        }
        public static void main(String[] args) {
            ProjectVisitor m = new ProjectVisitor();
        }
    }
    
  5. 作为“Java 应用程序”运行。

请帮助我。提前致谢。

最佳答案

您无法从普通 Java 应用程序使用任何 Eclipse 工作区 API。

只有作为 Eclipse 或 Eclipse RCP 一部分运行的 Eclipse 插件才能访问工作区。这是因为在 Eclipse 启动期间进行了大量的初始化以使工作区可用。

关于java - 使用 JDT 解析工作区时出现错误 "Workspace is closed",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33183901/

相关文章:

java - 如何使用 JFileChooser 将 CSV 文件数据输入到 JTable 中

java - 在 Java 中以管理员身份运行命令行并停止 Windows 服务

java - Spring-Social/Twitter——ConnectController 不响应/连接?

erlang - 如何为 erlang 中的模块生成 AST?

python AST : How to get the children of a node

java - 将文本转换为 URL

eclipse-plugin - 构造型属性和标记值之间的差异

eclipse-plugin - Apex 编辑器支持代码格式

java - 如何以编程方式更改 Eclipse 编辑器的字体(大小)?

java - 使用 eclipse AST 检查 Java 代码片段