public static Object eval(String str) throws IOException, Exception{ //生成java文件 String s = "package com.test; public class Temp{public int rt(){ return "+str+"; } }";
File f = new File("Temp.java"); PrintWriter pw = new PrintWriter(new FileWriter(f)); pw.println(s); pw.close(); //动态编译 Main javac = new Main(); String[] cpargs = new String[] {"-d", System.getProperty( "user.dir")+"/bin","Temp.java"}; int status = javac.compile(cpargs); if(status!=0){ System.out.println("没有成功编译源文件!"); return null; } //调用Temp的rt方法返回结果: MyTest mc = new MyTest(); Class clasz = mc.getClass().forName("com.test.Temp"); Method rt = clasz.getMethod("rt"); return rt.invoke(clasz.newInstance());