动态编译实例代码。非常简单。我看也不用注解了吧。
import java.io.*;
import java.util.*;
import java.lang.reflect.*;
import java.io.file;
public class compiletest{
static com.sun.tools.javac.main javac = new com.sun.tools.javac.main();
public static void main(string[] args){
try{
file file = file.createtempfile("runtime",".java",new file(system.getproperty("user.dir")));
string filename = file.getname();
string classname = filename.substring(0,filename.indexof(.));
printwriter out = new printwriter(new fileoutputstream(file));
out.println("public class "+classname+"{");
out.println("public static void main(string[] args){");
out.println("system.out.println(\"yes!\");");
out.println("}}");
out.flush();
out.close();
string[] arg = new string[]{"-d",system.getproperty("user.dir"),filename};
int status = javac.compile(arg);
class cls = class.forname(classname);
method main = cls.getmethod("main", new class[]{string[].class} );
main.invoke(null, new object[] { new string[0] });
file.delete();
file = new file(classname+".class");
file.delete();
}catch(exception e){e.printstacktrace();}
}
}
