动态的Java - 无废话JavaCompilerAPI中文指南 - Meta-Interpretation
1.6之后JDK提供了一套compiler API,定义在JSR199中, 提供在运行期动态编译java代码为字节码的功能简单说来,这一套API就好比是在java程序中模拟javac程序,将java源文件编译为class文件;其提供的默认实现也正是在文件系统上进行查找、编译工作的,用起来感觉与javac基本一致;
不过,我们可以通过一些关键类的继承、方法重写和扩展,来达到一些特殊的目的,常见的就是"与文件系统解耦"(就是在内存或别的地方完成源文件的查找、读取和class编译)
需要强调的是,compiler API的相关实现被放在tools.jar中,JDK默认会将tools.jar放入classpath而jre没有,因此如果发现compiler API相关类找不到,那么请检查一下tools.jar是否已经在classpath中;
当然我指的是jdk1.6以上的版本提供的tools.jar包
Read full article from 动态的Java - 无废话JavaCompilerAPI中文指南 - Meta-Interpretation
No comments:
Post a Comment