package com.aflfte.test;
import java.lang.reflect.Method;
import java.net.URL;
import java.net.URLClassLoader;
import javax.tools.JavaCompiler;
import javax.tools.ToolProvider;
/**
* 动态编译
* 通过Runtime.getRuntime()进行动态运行编译好的类
*
* @author root
*
*/
public class Demo01 {
public static void main(String[] args) throws Exception {
JavaCompiler com=ToolProvider.getSystemJavaCompiler();
int r=com.run(null, null, null, "/root/文档/HelloWord.java");
System.out.println(r==0?"is OK":"Error");
//通过Runtime.getRuntime()进行动态运行编译好的类
/**Runtime run=Runtime.getRuntime();
Process pr=run.exec("java -cp /root/文档 HelloWord");
InputStream in=pr.getInputStream();
BufferedReader reader=new BufferedReader(new InputStreamReader(in));
String info="";
while((info=reader.readLine())!=null) {
System.out.println(info);
}*/
//通过反射动态加载类
URL[] urls=new URL[] {new URL("file:/"+"root/文档/")};
URLClassLoader loader=new URLClassLoader(urls);
Class c=loader.loadClass("HelloWord");
//调用加载类的main方法
Method m=c.getMethod("main", String[].class);
//Object强转型不加分被编译成m.invoke(null,"aa","bb"}出现参数个数不配问题
m.invoke(null,(Object)new String[] {});
}
}
« 测试脚本引擎执行javascript代码
|
通过反射获取泛型信息»
|