Java的动态机制---动态编译
2019-07-27 本文已影响0人
吃块西瓜写代码
Java的动态机制---动态编译
1 作用
- 客户写代码,动态编译。
- 服务器动态加载某些类文件
2 两种做法
- 通过Runtime调用Javac
- 通过JavaCompiler实现编译
3 参数
第一个为Java编译器提供参数
第二个为接受java编译器的输出信息
第三个接收编译器的错误信息
第四个参数能传入一个或多个Java源文件
返回值为0 表示成功,
public class Demo01{
public static void main(String[] args){
JavaCompiler compiler = ToolProvider.getSystemJavaCompiler();
int result = compiler.run(null,null,null,"c:/Hello.java");
}
}
4 动态运行编译好的类
- 使用Runtime运行;客户写代码,动态编译。
- 通过反射运行编译好的类
URLClassLoader loader = new URLClassLoader(urls);
Class c = loader.loaderClass(classFile);
c.getMethod("main",String[].class).invole(null,(Object)new Sttring[]{});
//Object由于可变参数时JDK5之后才有,因此如果不转为Object会 Sttring[]{“11”“vv”}被当作两 个参数。