import java.io.*;
import java.lang.reflect.Method;
import com.sun.tools.javac.*;
public class MyClass {
private static Main javac = new Main();
public static void main(String[] args) throws Exception {
String str = "";
MyClass mc = new MyClass();
DataInputStream bd = new DataInputStream(System.in);
byte[] brray = new byte[200];
int i = bd.read(brray);
str = new String(brray, 0, i);
//eval(str);
eval("mc" + str + "();");
}
public static Object eval(String str) throws Exception {
//生成java文件
String s = "class Temp{";
s += "public static void main(String[] args) throws Exception{";
s += "test.MyClass mc = new test.MyClass();";
//s += str;
s += "mc." + str;
s += "}";
s += "}";
File f = new File("Temp.java");
PrintWriter pw = new PrintWriter(new FileWriter(f));
pw.println(s);
pw.close();
//動態編譯
com.sun.tools.javac.Main javac = new com.sun.tools.javac.Main();
String[] cpargs = new String[] { "-d",
System.getProperty("user.dir") + "/src/test", "Temp.java" };
int status = javac.compile(cpargs);
if (status != 0) {
System.out.println("沒有成功編譯原始檔案!");
return null;
}
//調用Temp的main方法返回結果:
Class clasz = Class.forName("Temp");
Method main = clasz.getMethod("main", new Class[] { String[].class });
return main.invoke(null, new Object[] { new String[0] });
//如果方法沒有返回就直接調用
}
public Object mc1() {
Object obj = "str";
System.out.print("mc1");
return obj;
}
void mc2() {
System.out.print("mc2");
}
}