Eclipse 是否可以创建命令行JDT应用程序?

Eclipse 是否可以创建命令行JDT应用程序?,eclipse,command-line,eclipse-pdt,Eclipse,Command Line,Eclipse Pdt,我想创建一个命令行应用程序来分析Java代码。EclipseJDT似乎是这项工作的合适工具,但是我在JDT上找到的每个教程都将JDT作为Eclipse插件启动 我希望这样: public static void main(String[] args) throws Exception { IWorkspace workspace = ResourcesPlugin.getWorkspace(); ... } <?xml version="1.0" encoding="UT

我想创建一个命令行应用程序来分析Java代码。EclipseJDT似乎是这项工作的合适工具,但是我在JDT上找到的每个教程都将JDT作为Eclipse插件启动

我希望这样:

public static void main(String[] args) throws Exception {
    IWorkspace workspace = ResourcesPlugin.getWorkspace();
    ...
}
<?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>

开始吧。但是,getWorkspace()会引发一个异常,即服务未启动。

您希望确保首先启动了Eclipse。使用EclipseStarter类运行,然后您可以使用ResourcesPlugin上的方法。

如果您想利用JDT,您必须启动eclipse。您可以使用扩展点“org.eclipse.core.runtime.applications”来创建从命令行开始的最小应用程序

  • 创建一个新的插件项目
  • 将“org.eclipse.core.runtime”和“org.eclipse.core.resources”添加到依赖项中
  • 为“org.eclipse.core.runtime.applications”创建扩展
  • 创建一个实现“org.eclipse.equinox.app.iaapplication”的类,并在扩展中引用它
  • 我的plugin.xml如下所示:

    public static void main(String[] args) throws Exception {
        IWorkspace workspace = ResourcesPlugin.getWorkspace();
        ...
    }
    
    <?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>
    
    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
        }
    
    }
    
    输出为:

    Hello eclipse位于D:/Arne/workspace/runtime-TestApplication.id2


    我在这里问了一个类似(不太类似)的问题(),这可能是我感兴趣的。我找到了EclipseStarter类,但是如何插入它?必须定义一个Eclipse应用程序才能运行,它将运行该应用程序。您需要将org.eclipse.osgi插件放在类路径中。您的应用程序将实现IAApplication,它基本上有start()和stop()。从start()方法的内部,您可以开始您的工作。谢谢Arne!工作得很有魅力。显示这些文件对Eclipse/OSGi的新手尤其有用。我本来打算牺牲我的邻居,但我得留到事情真的变得糟糕的时候。。。