Java 动态编译
代码package test;
import java.io.*;
import java.lang.reflect.*;
import java.io.File;
import java.net.URL;
import java.net.URLClassLoader;
public class CompileTest {
static com.sun.tools.javac.Main javac = new com.sun.tools.javac.Main();
public static void main(String[] args) {
try {
String strClassname = "Test1";
String strFile=System.getProperty("user.dir")+"\\"+strClassname+".java";
File file =new File(strFile);
////File.createTempFile("RunTime", ".java", new File(System.getProperty("user.dir")));
String filename = file.getName();
PrintWriter out = new PrintWriter(new FileOutputStream(file));
out.println("public class " + strClassname + "{\n");
out.println("public static void main(String[] args){\n");
out.println("System.out.println(\"你好!\");\n");
out.println("}\n}\n");
out.flush();
out.close();
String[] arg = new String[]{"-d", System.getProperty("user.dir"), filename};
//String[] arg = new String[]{"-d", System.getProperty("user.dir")+"/build/classes", filename};
javac.compile(arg);
URL classpath = new URL("file:/" + System.getProperty("user.dir") + "/");
URLClassLoader classLoader = new URLClassLoader(new URL[] { classpath });
Class cls = classLoader.loadClass(strClassname);
Method main = cls.getMethod("main", new Class[]{String[].class});
main.invoke(null, new Object[]{new String[0]});
file.delete();
} catch (Exception e) {
e.printStackTrace();
}
}
}
Java动态编译,以后可以整合到FS中

浙公网安备 33010602011771号