import java.io.File;
import java.io.FileWriter;
import java.net.URL;
import java.net.URLClassLoader;
import javax.tools.JavaCompiler;
import javax.tools.JavaCompiler.CompilationTask;
import javax.tools.StandardJavaFileManager;
import javax.tools.ToolProvider;
/**
* 手动编译程序
* @author MyHP
*
*/
public class Test {
public static void main(String[] args) throws Exception {
String rt = "\r\n";
String src =
"public class HelloWorld {" + rt +
" public static void main(String[] args) {" + rt +
" System.out.println(\"Hello,world!\");" + rt +
" }" + rt +
"}";
String fileName = System.getProperty("user.dir") +
"/src/HelloWorld.java";
File f = new File(fileName);
FileWriter fw = new FileWriter(f);
fw.write(src);
fw.flush();
fw.close();
//compile
JavaCompiler compiler = ToolProvider.getSystemJavaCompiler();
StandardJavaFileManager fileMgr = compiler.getStandardFileManager(null, null, null);
Iterable units = fileMgr.getJavaFileObjects(fileName);
CompilationTask t = compiler.getTask(null, fileMgr, null, null, null, units);
t.call();
fileMgr.close();
//load into memory and create an instance
URL[] urls = new URL[]{new URL("file:/" + System.getProperty("user.dir") + "/src")};
URLClassLoader ul = new URLClassLoader(urls);
Class c = ul.loadClass("HelloWorld");
System.out.println(compiler.getClass().getName());
System.out.println(c);
}
}
java手动编译类
最新推荐文章于 2024-07-28 11:05:12 发布