Search code examples
javaeclipseeclipse-jdt

Executing Eclipse plugin (jdt/ast) outside eclipse IDE environment


Can I execute Eclipse Java development tools as a standalone process? I need to get Java program's AST structure using Eclipse JDT from another program, and to do that, I need to execute eclipse plugin as a stand-alone process behind the scene.

Is that possible? If so, how one can do that?


Solution

  • Eclipse/jdt and eclipse/ast is nothing more than a jar file, so one can use them to build standalone java application.

    Example

    I googled to find ASTExplorer as an example to make eclipse/ast plugin as a standalone java project.

    The program was targeted for pretty old eclipse (3.0.2), I downloaded the 3.0.2 for Mac OS X this site - http://archive.eclipse.org/eclipse/downloads/drops/R-3.0.2-200503110845/

    1. You need to setup ECLIPSE_HOME classpath variables in Preference -> Java -> Classpath variables enter image description here
    2. The .classpath has those classpath variables already, you can refer to this post - .classpath contents update in eclipse. As you can see it refers eclipse/jdt(art) jar files. I'm pretty sure one can change the reference to the newest version of jdt/ast without downloading the 3.0.2 version.
    3. As I use Mac, I need to replace the swt for PC with swt for Mac. I could do that in BuildPath/Configure Build path enter image description here enter image description here
      1. First remove the PC swt reference.
      2. Then add the correct Mac swt reference.

    Compile the example with the eclipse indigo/on mac

    When the setup is correct, eclipse starts building the project. You can use Project -> Build Project menu. Then, you can check the application works fine in eclipse. enter image description here

    Generate the executable jar

    1. Export to executable jar file. enter image description here enter image description here enter image description here
    2. You'll get some warnings, but you'll have a jar file.

    Execute the generated jar

    Just executing java -jar ast.jar doesn't work on Mac, I got a hint from this post. Running SWT based, cross-platform jar properly on a Mac

    In short, you need to run java -XstartOnFirstThread -jar ast.jar