您的位置:首页 > 编程语言 > Java开发

动态编译,运行java程序

2010-09-08 20:40 543 查看
一。以下是一个动态编译,运行java程序的完整实例:package cai.dynamiccompile.compile;

import java.lang.reflect.Method;
import com.sun.tools.javac.Main;

@SuppressWarnings("unchecked")
public class MyCompile {

public static void main(String[] args) throws Exception{

Main javac = new Main();
String fileName = System.getProperty("user.dir")+ "//src//cai//dynamiccompile//compile//BeCompiled.java";
String str[] = new String[]{fileName};
int status = javac.compile(str);
System.out.println("status: " + status);

try {
// 访问这个类
Class cls = Class.forName("cai.dynamiccompile.compile.BeCompiled");

//映射main方法
Method main = cls.getMethod("main",new Class[] { String[].class });

//执行main方法
main.invoke(null, new Object[] { new String[0] });
}catch (SecurityException se) {
se.printStackTrace();

}
}
}

package cai.dynamiccompile.compile;

public class BeCompiled {

public BeCompiled() {
System.out.println("program is running in the class construction!");
}
public static void main(String[] args) {
System.out.println("program is running in main class!");
}
}

注释说明:

(1) Class.forName("cai.dynamiccompile.compile.BeCompiled")中的"cai.dynamiccompile.compile.BeCompiled"一定要在项目的classpath下,即程序在MyEclipse的目录结构如下:

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: