我想创建一个命令行应用程序来分析Java代码。 Eclipse JDT似乎是适合这项工作的工具,但是我可以在JDT上找到的每个教程都将JDT作为Eclipse插件启动。
我希望这样的事情:
public static void main(String[] args) throws Exception {
IWorkspace workspace = ResourcesPlugin.getWorkspace();
...
}
开始使用。但是,getWorkspace()会抛出服务未启动的异常。
答案 0 :(得分:2)
如果你想利用JDT,你必须开始eclipse。您可以使用扩展点“org.eclipse.core.runtime.applications”来创建从命令行开始的最小应用程序。
我的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
}
}
输出是:
你好eclipse在D:/Arne/workspaces/runtime-TestApplication.id2
答案 1 :(得分:0)
您希望确保首先启动Eclipse。使用EclipseStarter类来运行,然后可以使用ResourcesPlugin上的方法。