Return to Snippet

Revision: 20926
at December 1, 2009 09:09 by akostajti


Initial Code
package ex.tajti.tools;

import javax.tools.Diagnostic;
import javax.tools.DiagnosticListener;
import javax.tools.JavaCompiler;
import javax.tools.JavaFileObject;
import javax.tools.StandardJavaFileManager;
import javax.tools.ToolProvider;

/**
 *
 * @author ákos tajti
 */
public class Compiler {

    /**
     * compiles a java source file with the given <code>fileName</code>
     * 
     * @param fileName
     */
    public void compile(String fileName) {
        /*
         * the compiler will send its messages to this listener
         */
        DiagnosticListener listener = new DiagnosticListener() {

            public void report(Diagnostic diagnostic) {
                System.err.println("gond: " + diagnostic.getMessage(null));
                System.err.println("sor: " + diagnostic.getLineNumber());
                System.err.println(diagnostic.getSource());
            }
        };
        
        //getting the compiler object
        JavaCompiler compiler = ToolProvider.getSystemJavaCompiler();
        StandardJavaFileManager manager = compiler.getStandardFileManager(null, null, null);
        Iterable<? extends JavaFileObject> files = manager.getJavaFileObjects(fileName);
        JavaCompiler.CompilationTask task = compiler.getTask(null, manager, listener, null, null, files);
        
        // the compilation occures here
        task.call();
    }
}

Initial URL
http://cesjava.freeblog.hu

Initial Description
this simple snippet compiles a Java source file.

Initial Title
programmatically compiling a Java source file

Initial Tags
java

Initial Language
Java