运行java代码错误:工作区已关闭

时间:2014-02-17 21:02:04

标签: java eclipse-plugin

为了创建一个自动项目,我创建了一个具有以下依赖项的插件项目:

  1. org.eclipse.core.resources
  2. org.eclipse.equinox.registry
  3. org.eclipse.core.runtime
  4. 以下java类位于src文件夹中:

    package tester;
    
    import org.eclipse.core.resources.IProject;
    import org.eclipse.core.resources.IWorkspaceRoot;
    import org.eclipse.core.resources.ResourcesPlugin;
    import org.eclipse.core.runtime.CoreException;
    import org.eclipse.core.runtime.IProgressMonitor;
    import org.eclipse.core.runtime.NullProgressMonitor;
    
    public class tes {
    
        public static void main(String[] args) {
            // TODO Auto-generated method stub
            IProgressMonitor progressMonitor = new NullProgressMonitor();
            IWorkspaceRoot root = ResourcesPlugin.getWorkspace().getRoot();
            IProject project = root.getProject("DesiredProjectName");
            try {
                project.create(progressMonitor);
                project.open(progressMonitor);
            } catch (CoreException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }
    
        }
    
    }
    

    运行插件后,我运行java类在eclipse应用程序中创建一个项目,但是出现了以下错误:

    Exception in thread "main" java.lang.IllegalStateException: Workspace is closed.
        at org.eclipse.core.resources.ResourcesPlugin.getWorkspace(ResourcesPlugin.java:399)
        at tester.tes.main(tes.java:15)
    

    我做错了什么?我为我糟糕的英语道歉。

1 个答案:

答案 0 :(得分:4)

您不能只在普通Java程序的main类中开始使用Eclipse资源。您必须使用eclipse命令或指定org.eclipse.equinox.launcher.Main主类来启动Eclipse。这是因为在工作空间可用之前需要进行大量初始化。

要运行'无头'Eclipse应用程序,您应该使用org.eclipse.core.runtime.applications扩展点来定义应用程序和要为应用程序运行的类。类似的东西:

<extension
     id="appname"
     point="org.eclipse.core.runtime.applications">
  <application
        cardinality="singleton-global"
        thread="main"
        visible="true">
     <run
           class="package.Application">
     </run>
  </application>
</extension>

您可以在-application命令的eclipse参数上指定此应用程序ID。