老大记得给我送分哦:)我很穷的!!
import java.io.*;public class CompilingClassLoader extends ClassLoader
{
  读入文件,将它存为byte数组 
  private byte[] getBytes( String filename ) throws IOException {    File file = new File( filename );
    long len = file.length();    byte raw[] = new byte[(int)len];    FileInputStream fin = new FileInputStream( file );
    
    int r = fin.read( raw );
    if (r != len)
      throw new IOException( "Can't read all, "+r+" != "+len );    fin.close();    return raw;
  }  //以输入参数为文件名编译java文件,成功返回true,不成功返回false
  private boolean compile( String javaFile ) throws IOException {    System.out.println( "CCL: Compiling "+javaFile+"..." );    Process p = Runtime.getRuntime().exec( "javac "+javaFile );    try {
      p.waitFor();
    } catch( InterruptedException ie ) { System.out.println( ie ); }    //取得编译是否成功的参数
    int ret = p.exitValue();    //ret==0表示编译成功
    return ret==0;
  }  //核心程序,查找并载入java文件,看其是否需要编译
  //如需要,则编译后将其实例化,否则直接实例化
  public Class loadClass( String name, boolean resolve )
      throws ClassNotFoundException {
    
    Class clas = null;    clas = findLoadedClass( name );    //System.out.println( "findLoadedClass: "+clas );    // 生成文件路径
    // 例如: java.lang.Object => java/lang/Object
    
    String fileStub = name.replace( '.', '/' );    String javaFilename = fileStub+".java";
    String classFilename = fileStub+".class";    File javaFile = new File( javaFilename );
    File classFile = new File( classFilename );    //System.out.println( "j "+javaFile.lastModified()+" c "+
    //  classFile.lastModified() );    // 根据文件日期,判断是否要重编译
     
   if (javaFile.exists() &&
         (!classFile.exists() ||
          javaFile.lastModified() > classFile.lastModified())) {      try {
        // 编译失败,或类文件不存在
        if (!compile( javaFilename ) || !classFile.exists()) {
          throw new ClassNotFoundException( "Compile failed: "+javaFilename );
        }
      } catch( IOException ie ) {        throw new ClassNotFoundException( ie.toString() );
      }
    }    //在编译成功,或不需要编译的情况下,将class文件载入到byte数组
    try {      byte raw[] = getBytes( classFilename );
      //将byte数组转化为Class类型实例
      clas = defineClass( name, raw, 0, raw.length );
    } catch( IOException ie ) {
    }    //System.out.println( "defineClass: "+clas );
    //如果clas==null,按系统默认方式载入class
    if (clas==null) {
      clas = findSystemClass( name );
    }    //System.out.println( "findSystemClass: "+clas );    if (resolve && clas != null)
      resolveClass( clas );    // 如果仍然不能载入,则抛出错误
    if (clas == null)
      throw new ClassNotFoundException( name );    // 返回载入的class实例
    return clas;
  }
}