jdk5下 除了使用com.sun.tools.javac.Main
还有其他解决方案么?
使用com.sun.tools.javac.Main有什么限制条件?

解决方案 »

  1.   

    package test;
    import java.io.*;
    import java.util.*;
    import java.lang.reflect.*;
    import java.io.File;
     
    public class CompileTest{
     static com.sun.tools.javac.Main javac = new com.sun.tools.javac.Main();
     public static void main(String[] args){
      try{
      File file = new File("src","Tempdemo.java"); 
       String filename = file.getName();
       String classname = filename.substring(0,filename.indexOf('.'));
       PrintWriter out = new PrintWriter(new FileOutputStream(file));
       out.println("public class "+classname+"{");
       out.println("public static void main(String[] args){");
       out.println("System.out.println(\"Yes222244333!\");");
       out.println("}}");
       out.flush();
       out.close();  
       String[] arg = new String[]{"-d","WebRoot\\WEB-INF\\classes",filename};
       int status = javac.compile(arg); 
       Class cls = Class.forName(classname);
       Method main = cls.getMethod("main", new Class[]{String[].class} );
       main.invoke(null, new Object[] { new String[0] });
       file.delete(); 
       file = new File(classname+".class"); 
       file.delete();
      }catch(Exception e){e.printStackTrace();} 
      
     } 
      

  2.   

    有用过apache commons jci么?
      

  3.   

    http://www.ibm.com/developerworks/cn/java/j-jcomp/?S_TACT=105AGX52&S_CMP=tut-cto