为了创建一个自动项目,我创建了一个具有以下依赖项的插件项目:
以及位于 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)
我究竟做错了什么?我为我糟糕的英语道歉。
您不能只是在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)
您可以-application在eclipse命令的参数上指定此应用程序 ID 。
| 归档时间: |
|
| 查看次数: |
3942 次 |
| 最近记录: |