通过tool.jar动态生成类并编译加载
来源:互联网 发布:方维直播源码漏洞 编辑:程序博客网 时间:2024/05/17 02:49
jdk/lib目录下的tool.jar包含了一个完整的java编译器包,利用它可以实现类文件的运行时动态生成并且编译加载。下面是一个例子:
import java.io.*;import java.util.*;import java.lang.reflect.*;public class MakeTodayClass { Date today = new Date(); String todayMillis = Long.toString(today.getTime()); String todayClass = "z_" + todayMillis; String todaySource = todayClass + ".java"; public static void main (String args[]){ MakeTodayClass mtc = new MakeTodayClass(); mtc.createIt(); if (mtc.compileIt()) { System.out.println("Running " + mtc.todayClass + ":/n/n"); mtc.runIt(); } else System.out.println(mtc.todaySource + " is bad."); } public void createIt() { try { FileWriter aWriter = new FileWriter(todaySource, true); aWriter.write("public class "+ todayClass + "{"); aWriter.write(" public void doit() {"); aWriter.write(" System.out.println(/""+todayMillis+"/");"); aWriter.write(" }}/n"); aWriter.flush(); aWriter.close(); } catch(Exception e){ e.printStackTrace(); } } public boolean compileIt() { String [] source = { new String(todaySource)}; ByteArrayOutputStream baos= new ByteArrayOutputStream(); new sun.tools.javac.Main(baos,source[0]).compile(source); // if using JDK >= 1.3 then use // public static int com.sun.tools.javac.Main.compile(source); return (baos.toString().indexOf("error")==-1); } public void runIt() { try { Class params[] = {}; Object paramsObj[] = {}; Class thisClass = Class.forName(todayClass); Object iClass = thisClass.newInstance(); Method thisMethod = thisClass.getDeclaredMethod("doit", params); thisMethod.invoke(iClass, paramsObj); } catch (Exception e) { e.printStackTrace(); } } }
- 通过tool.jar动态生成类并编译加载
- 通过tool.jar动态生成类并编译加载
- Java 计算器,通过动态生成并编译Java类来进行
- 通过代理接口在内存中动态生成代理类源代码并编译实现的真正动态代理
- 动态生成java、动态编译、动态加载
- 通过URLClassLoader实现动态加载jar文件
- 动态加载jar 并进行调用
- 编译Java文件并生成jar包
- VC++通过动态生成并加载DLL,实现可执行文件的自删除
- 动态加载Dll时,通过Type生成类对象
- Java动态编译源代码并加载执行
- java生成java文件并动态编译
- 通过oracle,调用java类,并加载jar包到oracle中以支持java类。
- 通过oracle,调用java类,并加载jar包到oracle中以支持java类
- 通过oracle,调用java类,并加载jar包到oracle中以支持java类
- 通过URLClassLoader实现动态加载指定路径下所有Jar
- java动态加载jar包,并运行其中的类和方法
- java动态加载jar包,并运行其中的类和方法
- 关于jconsole.jar
- [译作]LOG4J快速入门及参考资料
- OPC客户端开发几个境界
- asp得一些常见错误解决方法(整理添加中)
- 坚持学asp.net——(九)
- 通过tool.jar动态生成类并编译加载
- [网页代码]下拉菜单
- 异常跟踪
- SCEA之路--第二次模拟题小结
- 今天……
- some english dictionary on Internet
- 李维语录
- 电子政务市场风云录
- 国产电子政务方案出炉 首份政府采购指导清单?