我想创建一个命令行应用程序,它做的Java代码分析。 在Eclipse JDT似乎是这个职位的最佳工具,但每个教程中,我可以找到JDT启动的JDT作为Eclipse插件。
我希望是这样的:
public static void main(String[] args) throws Exception {
IWorkspace workspace = ResourcesPlugin.getWorkspace();
...
}
开始。 然而getWorkspace()抛出该服务未启动异常。
如果你想利用JDT你必须启动eclipse。 您可以使用扩展点“了org.eclipse.core.runtime.applications”来创建一个最小的应用程序,在命令行启动。
- 创建一个新的插件项目。
- “org.eclipse.core.runtime”和“org.eclipse.core.resources”添加到的依赖关系。
- 创建“了org.eclipse.core.runtime.applications”的延伸。
- 创建实现“org.eclipse.equinox.app.IApplication”一类,并在您的扩展引用它。
我plugin.xml中看起来是这样的:
<?xml version="1.0" encoding="UTF-8"?>
<?eclipse version="3.4"?>
<plugin>
<extension
id="id2"
point="org.eclipse.core.runtime.applications">
<application
cardinality="singleton-global"
thread="main"
visible="true">
<run class="testapplication.Application1">
</run>
</application>
</extension>
</plugin>
MANIFEST.MF:
Manifest-Version: 1.0
Bundle-ManifestVersion: 2
Bundle-Name: TestApplication
Bundle-SymbolicName: TestApplication;singleton:=true
Bundle-Version: 1.0.0.qualifier
Bundle-Activator: testapplication.Activator
Require-Bundle: org.eclipse.core.runtime,
org.eclipse.core.resources
Bundle-ActivationPolicy: lazy
Bundle-RequiredExecutionEnvironment: JavaSE-1.6
Application1.java:
package testapplication;
import org.eclipse.core.resources.ResourcesPlugin;
import org.eclipse.equinox.app.IApplication;
import org.eclipse.equinox.app.IApplicationContext;
public class Application1 implements IApplication {
@Override
public Object start(IApplicationContext context) throws Exception {
System.out.println("Hello eclipse at "
+ ResourcesPlugin.getWorkspace().getRoot().getRawLocation());
return IApplication.EXIT_OK;
}
@Override
public void stop() {
// nothing to do at the moment
}
}
输出是:
你好在d日食:/Arne/workspaces/runtime-TestApplication.id2
你要确保你第一次启动Eclipse的。 使用EclipseStarter类得到的东西运行,那么你可以使用ResourcesPlugin方法。