java动态编程-动态编译机制
来源:互联网 发布:mac怎么卸载软件 编辑:程序博客网 时间:2024/06/15 00:11
java可以在运行时,进行动态编译,也就是说,可以在代码中,由程序控制进行编译
俩种动态编译方法:
1.执行cmd命令,调用javac进行编译
2.利用java提供的JavaComplier
3.可以利用类加载器还有java反射来执行编译好的字节文件
/** * java 动态编译 * @author liuxg * @date 2016年5月24日 上午9:15:00 */public class DynamicDemo { public static void main(String[] args) { DynamicDemo dy = new DynamicDemo(); dy.javaCompilerDemo(); //dy.runTimeDemo(); dy.excuteDemo(); } /** * run的参数 * 1.标准输入流,为空时候,默认使用system.in * 2.标准输出流,为空时候,默认使用system.out * 1.标准异常,为空时候,默认使用system.error * @return 0 表示成功 1表示失败 */ private void javaCompilerDemo(){ JavaCompiler compiler = ToolProvider.getSystemJavaCompiler(); int result = compiler.run(null,null,null,"D:\\myclass\\com\\jvm\\demo\\HelloLiuxg.java"); System.out.println(result == 0 ? "javaCompiler编译成功" : "javaCompiler编译失败"); } /** * 通过执行cmd命令,runtime编译 */ private void runTimeDemo(){ try { Runtime run = Runtime.getRuntime(); run.exec("javac -cp javac D:\\myclass\\com\\jvm\\demo\\HelloLiuxg.java"); System.out.println( "Runtime编译成功"); } catch (IOException e) { System.out.println( "Runtime编译失败"); e.printStackTrace(); } } /** * 执行字节码 */ private void excuteDemo(){ try { URL[] urls = new URL[]{new URL("file://D:/myclass/com/jvm/demo/HelloLiuxg.class")}; URLClassLoader loader = new URLClassLoader(urls); Class<HelloLiuxg> clazz = (Class<HelloLiuxg>) loader.loadClass("com.jvm.demo.HelloLiuxg"); HelloLiuxg HelloLiuxg = clazz.newInstance(); System.out.println(HelloLiuxg.hello()); } catch (Exception e) { e.printStackTrace(); } }}
1 0
- java动态编程-动态编译机制
- 动态生成java、动态编译、动态加载
- JAVA动态代理机制
- java动态代理机制
- JAVA动态代理机制
- java动态代理机制
- java动态代理机制
- Java 动态代理机制
- java 动态加载机制
- java动态代理机制
- Java动态代理机制
- Java动态代理机制
- Java 动态代理机制
- java动态代理机制
- JAVA动态绑定机制
- java动态代理机制
- java动态代理机制
- java动态代理机制
- Hbase rowkey 设计原则
- EditText每四位自动添加空格或者横线(银行卡输入格式,验券格式)
- DevExpress实现为TextEdit设置水印文字的方法
- QT(mingw32)配置QWT
- java UDP编程
- java动态编程-动态编译机制
- textview设置size 单位
- 判断奇数偶数
- 海哥看源码-View ViewGroup
- cell 上的剪贴板
- Fdfs错误tracker_query_storage fail, error no: 2, ...
- Win7命令行局域网发消息图解
- 欢迎使用CSDN-markdown编辑器
- 堆和栈的区别