Steps :
- Construct JavaFileObject from any source (i.e, here, from sourceCode String) and make it to iterable object
- Get the Java System Compiler
- Create a compiler task using Compiler.getTask(), (if required create the task with diagnostic collection to get compilation errors)
- Execute the Compiler Task (compile it).
Source Code :
import java.io.IOException;
import java.net.URI;
import java.util.Arrays;
import java.util.Locale;
import javax.tools.Diagnostic;
import javax.tools.DiagnosticCollector;
import javax.tools.JavaCompiler;
import javax.tools.JavaCompiler.CompilationTask;
import javax.tools.JavaFileObject;
import javax.tools.SimpleJavaFileObject;
import javax.tools.StandardJavaFileManager;
import javax.tools.ToolProvider;
public class CompileDynamicClasses {
static String sourceCode = "class DynamicClass{" + "public static void main (String args[]){"
+ "System.out.println (\"Hello, Dynamic Class!\");" + "}" + "}";
public static void main(String[] args) {
// Construct a JavaFileObject from source code
SimpleJavaFileObject fileObject = new DynamicJavaSourceCodeObject("DynamicClass",
sourceCode);
Continue reading "Generating and Compiling Java Classes using Java Compiler API"