【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 @ 2017-04-12 11:25  Qingyun_Qearl  阅读(1700)  评论(0)    收藏  举报