Java “错误”;“工作区已关闭”;使用JDT解析工作区时

Java “错误”;“工作区已关闭”;使用JDT解析工作区时,java,eclipse-plugin,abstract-syntax-tree,eclipse-jdt,Java,Eclipse Plugin,Abstract Syntax Tree,Eclipse Jdt,我想编写一个Java应用程序来显示我工作区中所有项目的名称。但我的程序总是注意到以下几点 import org.eclipse.core.resources.IProject; import org.eclipse.core.resources.ResourcesPlugin; public class ProjectVisitor { public ProjectVisitor() { IProject[] projects = ResourcesPlugin.getW

我想编写一个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();
    }
}
线程“main”java.lang.IllegalStateException中的异常:工作区已关闭。 位于org.eclipse.core.resources.ResourcesPlugin.getWorkspace(ResourcesPlugin.java:411) 在myPackage.ProjectVisitor.(ProjectVisitor.java:9) 在myPackage.ProjectVisitor.main(ProjectVisitor.java:16) 以下是我创建自己的应用程序的步骤:

  • 安装Java开发工具(JDT

  • 创建满足以下所有选项的空白eclipse插件:

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

  • 创建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();
        }
    }
    
  • 作为“Java应用程序”运行


  • 请帮帮我。提前谢谢

    您不能从普通Java应用程序使用任何Eclipse工作区API

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

    这可能会有所帮助