【Java基础】将传入的字符串拼接成一个java类 并编译运行

将传入的字符串拼接成一个java类 并编译运行

复制代码
    private static void eval(String str) throws Exception {
        //1.设置编译文件的文件名
        String className = "TempClass";
        //2.设置运行文件的文件名
        String classFileName = "TempClass.java";

        //拼接流
        StringBuilder builder = new StringBuilder(100);
        builder.append("public class ").append(className).append("{");
        builder.append("public static void main(String[] args){");
        builder.append(str);
        builder.append("}");
        builder.append("}");
        //将字符串写入到文件
        Writer out = new FileWriter(new File("F:/", classFileName));
        out.write(builder.toString());
        out.close();
        //编译文件 
        Process javacProcess = Runtime.getRuntime().exec("javac "+classFileName);
        //捕获异常信息
        InputStream inputStream = javacProcess.getErrorStream();
        byte[] buffer = new byte[1024];
        int length = -1;
        while ((length = inputStream.read(buffer)) != -1) {
            System.out.println("编译失败");
            System.out.println(new String(buffer, 0, length));
        }

        //运行文件 并获取执行的结果
        Process javaProcess =  Runtime.getRuntime().exec("java "+className);
        inputStream = javaProcess.getInputStream();
        byte[] bufferStr = new byte[1024];
        int len = -1;
        while ((len = inputStream.read(bufferStr)) != -1) {
            System.out.println("运行失败");
            System.out.println(new String(bufferStr, 0, len));
        }
    }
复制代码

 

posted @   Qingyun_Qearl  阅读(1691)  评论(0编辑  收藏  举报
编辑推荐:
· AI与.NET技术实操系列:基于图像分类模型对图像进行分类
· go语言实现终端里的倒计时
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
阅读排行:
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· ollama系列01:轻松3步本地部署deepseek,普通电脑可用
· 25岁的心里话
· 按钮权限的设计及实现
点击右上角即可分享
微信分享提示