java动态编译
来源:互联网 发布:淘宝批量充话费 编辑:程序博客网 时间:2024/05/22 15:04
简单来说,就是在java代码中实现java文件的编译运行喽,如果出现NullPointerException,请参见配置tools.jar
具体有啥用呢,比如java动态代理,它要生成临时的代理类吧,就这么加载。
package com.diyun;import java.io.File;import java.io.IOException;import javax.tools.JavaCompiler;import javax.tools.JavaCompiler.CompilationTask;import javax.tools.StandardJavaFileManager;import javax.tools.ToolProvider;import org.apache.commons.io.FileUtils;public class Test3{public static void main(String[] args) throws IOException, ClassNotFoundException, InstantiationException, IllegalAccessException {final String rt="\r\t"; //换行符/** * 生成java文件内容 */final String code="package com.diyun;"+rt+"import java.util.Arrays;"+rt+"public class Demo {"+rt+"public static void main(String[] args){"+rt+"char[] hellos=\"Hello World\".toCharArray();"+rt+"System.out.println(Arrays.toString(hellos));"+rt+"}"+rt+"}";String filePath=System.getProperty("user.dir"); //获取当前工作目录String fileName=filePath+"/Demo.java"; //文件名File file=new File(fileName); FileUtils.writeStringToFile(file,code); //commoms-io工具包//获取编译器,也就是传说中命令行中的“javac”!JavaCompiler compiler=ToolProvider.getSystemJavaCompiler();//获取文件管理器StandardJavaFileManager manager=compiler.getStandardFileManager(null, null, null);//获取文件Iterable units = manager.getJavaFileObjects(fileName);//创建编译任务CompilationTask task = compiler.getTask(null, manager, null,null,null,units);//进行编译task.call();manager.close();//获取类加载器ClassLoader loader=ClassLoader.getSystemClassLoader();Class c=loader.loadClass("com.diyun.Demo");c.newInstance();}}
丢半拉子代码放这里,留与以后研究研究,从这上面多多少少能看出一点java类加载机制
1 0
- java 内存编译-动态编译
- 动态编译JAVA程序
- 动态编译Java程序
- 动态编译JAVA程序
- JAVA动态编译简介
- 动态编译JAVA程序
- 动态编译JAVA程序
- Java动态编译
- Java的动态编译
- Java动态编译
- JAVA 的动态编译
- Java动态编译
- Java动态编译
- JAVA动态编译
- java动态编译
- Java动态编译笔记
- Java动态编译(一)
- 动态编译Java源文件
- 让你的 Xcode8 继续使用插件
- Java访问修饰符 public private protected
- 有关批判Arnold的正确姿势的建议
- 一. C++非引用形参
- 简单明了,彻底地理解Binder
- java动态编译
- 工厂模式
- C语言三种方法实现字符串左旋
- c语言笔面试题错题解析3
- Codevs1055 气球 字符串
- Scala课堂-5-类型和多态类型
- Https证书系列
- lodash
- 【数据结构】B树(B-Tree)