Java 动态生成代码并编译执行

本文详细展示了如何在Java中创建、检查并删除文件,使用PrintWriter生成代码,调用javac进行编译,以及执行编译后的T1.class。过程包括编译错误处理和程序运行输出。
File f = new File("T1.java");
if (f.exists()) f.delete();
// 生成代码文件
PrintWriter pw = new PrintWriter(new FileWriter("T1.java"));
pw.println("public class T1{");
pw.println("public static void main(String[] args) throws Exception{");
pw.println("System.outprintln(\"Hello Java!\");");
pw.println("}}");
pw.close();
 // 编译T1.java javac T1.java
Process process = Runtime.getRuntime().exec("cmd /c javac T1.java");
boolean runnable = true;
// process.getInputStream()用于获取进程的输出信息,不是报错信息。如果需要获取报错信息则应该使用process.getErrorStream()
// javac编译通过实际上是没有响应信息,所以这里获取响应信息是不正确的
BufferedReader br = new BufferedReader(new InputStreamReader(process.getErrorStream()));
while (true) {
    String temp = br.readLine();
    if (temp == null) break;
    System.out.println(temp);
    runnable = false;
}
// 运行T1.class
if (runnable) {
    process = Runtime.getRuntime().exec("cmd /c java T1");
    br = new BufferedReader(new InputStreamReader(process.getInputStream()));
    while (true) {
        String temp = br.readLine();
        if (temp == null) break;
        System.out.println(temp);
    }
}

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值