java生成java文件并动态编译
来源:互联网 发布:网络大电影点击排名 编辑:程序博客网 时间:2024/06/10 17:19
最近,所在项目组要用到动态生成Java 文件并编译执行。百度Google一番,资料还不少。思想就是用类的反射机制来实现。记下自己写成功的代码,以备后用:
- public void createDynamicFile() throws Exception {
- //得到写文件路径
- String filePath = "D://WorkSpace//code//java//myswt";
- System.out.println("filePath is: "+filePath);
- //得到文件名
- String fileName = "Test";
- File file = new File(filePath);
- //如果目录不存在,则创建目录
- if(!file.exists())
- file.mkdirs();
- String str = "";
- //拼Java文件
- str += "package com.gxg.swtTest; public class Test {public static void t(String[] args){System.out.println(/"Hello World!/");}}";
- //写文件
- OutputStreamWriter out = new OutputStreamWriter(new FileOutputStream(filePath + "//" + fileName+".java"),"utf-8");
- out.write(str);
- out.flush();
- out.close();
- //动态编译文件
- String className = "Test";
- String path = filePath + "/bin";
- com.sun.tools.javac.Main javac = new com.sun.tools.javac.Main();
- String[] args = new String[] {
- "-d",
- path,
- "-classpath",
- "%classpath%;"
- + path
- + ";",
- //包路径
- // + path+"/persistence-api-1.0.jar;"
- // + path+"/hibernate-annotations-3.3.0.ga.jar;"
- // + path+"/hibernate-commons-annotations-3.3.0.ga.jar;"
- // + path+"/struts2-codebehind-plugin-2.0.11.1.jar;"
- // + path+"/struts2-core-2.0.11.1.jar;"
- // + path+"/struts2-spring-plugin-2.0.11.1.jar;"
- // + path+"/xwork-2.0.4.jar;"
- // + path+"/spring-orm-2.5.4.jar;"
- // + path+"/spring-tx-2.5.4.jar;"
- // + path+"/dom4j-1.6.1.jar;",
- "-encoding", "utf-8", filePath + "//" + fileName +".java" };
- int status = javac.compile(args);
- if(status != 0) {
- System.out.println(fileName + "没有成功编译!"+status);
- } else {
- try {
- Class cls = Class.forName("Test");
- // 映射方法
- Method main = cls.getMethod("t", new Class[] { String[].class });
- // 执行方法
- main.invoke(null, new Object[] { new String[0] }); //第一个参数是方法的对象,第二个是要传入的参数。
- } catch (SecurityException se) {}
- }
- }
OK,现在就可以写个方法来调用测试了。调用createDynamicFile就会看见输出 Hello World!
- java生成java文件并动态编译
- 编译Java文件并生成jar包
- 动态编译.java文件
- 动态生成java、动态编译、动态加载
- Java 计算器,通过动态生成并编译Java类来进行
- 动态代理---动态生成java文件并编译成class文件
- 动态代理---动态生成java文件并编译成class文件
- 动态代理---动态生成java文件并编译成class文件
- Java动态生成XML文件
- java动态生成HTML文件
- Java 文件级动态编译
- Java 控制台编译Java文件并调用
- Java动态编译源代码并加载执行
- java处理txt文件,并生成文件
- 动态生成编译运行java类
- 动态生成编译运行java类
- 动态生成编译运行java类
- java 调用API 编译生成class文件,并加载产生对象
- libjingle翻译之《关于libjingle》
- 调查报告:公司博客(Corporate Blogs )可信度最低
- CSS圖片濾鏡
- GridView中页脚汇总显示
- libjingle翻译之《Important Concepts(重要概念)之Signals (信号)》
- java生成java文件并动态编译
- 加壳原理与简单实现加壳(delphi源代码)
- 阻止删除文件(文件占坑)的delphi代码
- java 获取路径
- 硬件防火墙和软件防火墙有什么区别
- Tomcat 的类/包加载顺序[转]
- Model PX2002串口联网服务器组网方式经验谈
- 重载copyProperties,使其支持Map类型
- vb概念