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

0 java eclipse-plugin

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

  1. org.eclipse.core.resources
  2. org.eclipse.equinox.registry
  3. org.eclipse.core.runtime

以及位于 src 文件夹中的以下 java 类:

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();
        }

    }

}
Run Code Online (Sandbox Code Playgroud)

运行插件后,运行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)
Run Code Online (Sandbox Code Playgroud)

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

gre*_*449 5

您不能只是在main普通 Java 程序的类中开始使用 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>
Run Code Online (Sandbox Code Playgroud)

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