为了创建一个自动项目,我创建了一个具有以下依赖项的插件项目:
以下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)
我做错了什么?我为我糟糕的英语道歉。
答案 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。