用户注册



邮箱:

密码:

用户登录


邮箱:

密码:
记住登录一个月忘记密码?

发表随想


还能输入:200字
云代码 - java代码库

用java程序编译java代码 JavaCompiler 动态编译

2013-04-18 作者: 小蜜锋举报

[java]代码库

import java.io.File;
import java.io.FileWriter;
import java.io.IOException;

import javax.tools.JavaCompiler;
import javax.tools.JavaCompiler.CompilationTask;
import javax.tools.StandardJavaFileManager;
import javax.tools.ToolProvider;
/**
 * 动态生成类以及编译,JDK版本必须要在1.6,或者1.6以上
 */
public class Compiler {

    //回车加换行符
    static String rt = "\r\n";
    //生成类的源文件,写成字符串的形式
    static String src =
        "public class HelloWorld  {" + rt +
        "    public static void main(String[] args) {" + rt +
        "         System.out.println(\"Hello world!\");" + rt +
        "    }" + rt +
        "}";

    public static void main (String[] args) throws Exception {

        //写文件,目录可以自己定义
        String filename = System.getProperty ("user.dir") + "/src/HelloWorld.java";
        //System.out.println (filename);
        File file = new File (filename);
        FileWriter fw = new FileWriter (file);
        fw.write (src);
        fw.flush();
        fw.close();

        //编译文件,调用jdk本身的工具
        JavaCompiler compiler = ToolProvider.getSystemJavaCompiler();
        System.out.println (compiler.getClass().getName() );

        StandardJavaFileManager sjfm = compiler.getStandardFileManager (null, null, null);
        Iterable units = sjfm.getJavaFileObjects (filename);
        CompilationTask ct = compiler.getTask (null, sjfm, null, null, null, units);
        ct.call();
        sjfm.close();
    }
}


网友评论    (发表评论)


发表评论:

评论须知:

  • 1、评论每次加2分,每天上限为30;
  • 2、请文明用语,共同创建干净的技术交流环境;
  • 3、若被发现提交非法信息,评论将会被删除,并且给予扣分处理,严重者给予封号处理;
  • 4、请勿发布广告信息或其他无关评论,否则将会删除评论并扣分,严重者给予封号处理。


扫码下载

加载中,请稍后...

输入口令后可复制整站源码

加载中,请稍后...