欢迎访问悦橙教程(wld5.com),关注java教程。悦橙教程  java问答|  每日更新
页面导航 : > > 文章正文

动态编译java代码,使用生成的类,编译java,import java.

来源: javaer 分享于  点击 21332 次 点评:68

动态编译java代码,使用生成的类,编译java,import java.


import java.io.*;import java.util.*;import java.lang.reflect.*;public class MakeTodayClass {  Date today = new Date();  String todayMillis = Long.toString(today.getTime());  String todayClass = "z_" + todayMillis;  String todaySource = todayClass + ".java";  public static void main (String args[]){    MakeTodayClass mtc = new MakeTodayClass();    mtc.createIt();    if (mtc.compileIt()) {       System.out.println("Running " + mtc.todayClass + ":\n\n");       mtc.runIt();       }    else       System.out.println(mtc.todaySource + " is bad.");    }  public void createIt() {    try {      FileWriter aWriter = new FileWriter(todaySource, true);      aWriter.write("public class "+ todayClass + "{");      aWriter.write(" public void doit() {");      aWriter.write(" System.out.println(\""+todayMillis+"\");");      aWriter.write(" }}\n");      aWriter.flush();            aWriter.close();      }    catch(Exception e){      e.printStackTrace();      }    }  public boolean compileIt() {    String [] source = { new String(todaySource)};    ByteArrayOutputStream baos= new ByteArrayOutputStream();    new sun.tools.javac.Main(baos,source[0]).compile(source);    // if using JDK >= 1.3 then use    //   public static int com.sun.tools.javac.Main.compile(source);        return (baos.toString().indexOf("error")==-1);    }  public void runIt() {    try {      Class params[] = {};      Object paramsObj[] = {};      Class thisClass = Class.forName(todayClass);      Object iClass = thisClass.newInstance();      Method thisMethod = thisClass.getDeclaredMethod("doit", params);      thisMethod.invoke(iClass, paramsObj);      }    catch (Exception e) {      e.printStackTrace();      }    }}
相关栏目:

用户点评