动态编译实例代码

编译|动态

动态编译实例代码。非常简单。我看也不用注解了吧。
import java.io.*;
import java.util.*;
import java.lang.reflect.*;
import java.io.File;

public class CompileTest{
static com.sun.tools.javac.Main javac = new com.sun.tools.javac.Main();
public static void main(String[] args){
try{
File file = File.createTempFile("RunTime",".java",new File(System.getProperty("user.dir")));
String filename = file.getName();
String classname = filename.substring(0,filename.indexOf('.'));
PrintWriter out = new PrintWriter(new FileOutputStream(file));
out.println("public class "+classname+"{");
out.println("public static void main(String[] args){");
out.println("System.out.println(\"Yes!\");");
out.println("}}");
out.flush();
out.close();
String[] arg = new String[]{"-d",System.getProperty("user.dir"),filename};
int status = javac.compile(arg);
Class cls = Class.forName(classname);
Method main = cls.getMethod("main", new Class[]{String[].class} );
main.invoke(null, new Object[] { new String[0] });
file.delete();
file = new File(classname+".class");
file.delete();
}catch(Exception e){e.printStackTrace();}

}
}

时间: 2024-08-03 19:41:52

动态编译实例代码的相关文章

利用Ext Js生成动态树实例代码_javascript技巧

一. 需求 要求生成一颗部门树,初始只列出根部门 当点击一个部门节点时,动态载入该部门下的直属子部门,并展开该部门节点 部门节点要求支持右键单击事件,当点击右键时,列出相关操作菜单 二. 关键类 这里主要涉及Ext JS的两个类: Ext.tree.TreeNode Ext.menu.Menu 相关API可以参考:http://extjs.com/deploy/ext/docs/ 三. 代码示例 1. 先看一下测试页面 复制代码 代码如下: <html> <head> <me

动态编译JAVA程序

编译|程序|动态 在Sun JDK 1.2及后续版本中,包含了一组可在程序运行时刻编译和执行Java代码的API.这些API被包含在tools.jar类库中.这个功能允许Java程序在运行时动态编译.执行小的代码块,在有些情况下这个功能会让Java应用程序的架构更加灵活.开放. 本文假定读者已经在计算机中安装并配置好了Sun JDK 1.2或更高的版本,并对javac编译器命令有所了解. 在Java程序中使用编译器 假定要使用javac命令编译 /home/mytest目录下Test.java文

.NET的动态编译与WS服务调用详解

这篇文章介绍了.NET的动态编译与WS服务调用详解,有需要的朋友可以参考一下,希望对你有所帮助       动态编译与WS服务,有关系么?今天就乱弹一番,如何使用动态编译动态生成WS服务调用的代理类,然后通过这个代理类调用WS服务.     首先,动态编译这玩意在.NET里面是非常简单的,实际上只涉及到两个类型:CodeDomProvider以及CompilerParameters他们都位于System.CodeDom.Compiler命名空间.     以下代码可将源码动态编译为一个程序集:

.NET的动态编译与WS服务调用详解_实用技巧

    动态编译与WS服务,有关系么?今天就乱弹一番,如何使用动态编译动态生成WS服务调用的代理类,然后通过这个代理类调用WS服务.    首先,动态编译这玩意在.NET里面是非常简单的,实际上只涉及到两个类型:CodeDomProvider以及CompilerParameters他们都位于System.CodeDom.Compiler命名空间.    以下代码可将源码动态编译为一个程序集:动态编译 复制代码 代码如下: CodeDomProvider provider = CodeDomPro

利用javax.tools动态编译执行java代码

inkfish原创,请勿商业性质转载,转载请注明来源(http://blog.csdn.net/inkfish ). 参考:使用 javax.tools 创建动态应用程序   javax.tools 包是一种添加到 Java SE 6 的标准 API,可以实现 Java 源代码编译,使您能够添加动态功能来扩展静态应用程序.本文将探查javax.tools包中提供的主要类,以Java表达式表示计算一个数值函数y=x*x+x.更多详情请参考<使用 javax.tools 创建动态应用程序>和jav

java 反射和动态代理详解及实例代码_java

一.java中的反射 1.通过反射加载类的属性和方法实例代码: /** * java.lang.Class 是反射的源头 * 我们创建了一个类,通过编译(javac.exe)生成对应的class文件,之后我们通过java.exe加载(jvm的类加载器加载)此class文件 * 此class文件加载到内存后,就是一个运行时类,存在缓存区,这个运行时类本事就是一个Class的实例 * 每一个运行时类只加载一次, */ Class<StudentExam> clazz = StudentExam.c

艾伟:C#代码动态编译、动态执行、动态调试

前几天看到一篇关于.net动态编译的文章 .NET中的动态编译 ,很受启发.在此基础上我做了一些封装,为使调用更加简单,并增加了对动态代码调试的支持,相同代码只编译一次的支持,代码改动自动重新编译,代码引用文件的自动加载和手工加载等功能.           如上图,我封装的类CSharpProvider很简单,下面说明一下一些公共成员的用法.       公共属性       AssemblyFileName:这个属性指定动态编译后生成的配件名称.       CompilerParamete

C#代码动态编译、动态执行、动态调试

前几天看到一篇关于.net动态编译的文章 .NET中的动态编译 ,很受启发.在 此基础上我做了一些封装,为使调用更加简单,并增加了对动态代码调试的支持 ,相同代码只编译一次的支持,代码改动自动重新编译,代码引用文件的自动加 载和手工加载等功能. 如上图,我封装的类CSharpProvider很简单,下面说明一下一些公共成员 的用法. 公共属性 AssemblyFileName:这个属性指定动态编译后 生成的配件名称. CompilerParameters:这个属性指定编译的参数 Referenc

ASP.NET动态生成静态页面的实例代码

生成静态页有很多好处,可以缓解服务器压力.方便搜索网站搜索等等,下面介绍一下生成静态页的实例代码,有需要的朋友可以参考一下   最近突然想把项目中新闻管理模块做成静态页,在网上找到很多很好的文章,在这里记录一下,现在只是实现静态页面的生成并没有实现分页功能.其主要原理就是读取数据库的数据然后替换掉静态模板页的内容. 首先制作一个模板页,暂时命名为template.htm,示例代码如下: <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transit