zoukankan      html  css  js  c++  java
  • 动态生成编译运行java类

    import java.io.File;
    import java.io.FileWriter;
    import java.lang.reflect.Method;
    
    public class CreateClass {
        private static String CLASS_NAME = "CreateClassTest";
        private static String CLASS_FILE = CLASS_NAME + ".java";
    
        public static void main(String args[]) {
            CreateClass mtc = new CreateClass();
            mtc.createClass();
            System.out.println("javac " + CLASS_FILE);
            mtc.compileClass();
            System.out.println("java " + CLASS_NAME);
            mtc.runClass();
        }
    
        public void createClass() {
            try {
                new File(CLASS_FILE).delete();
                FileWriter aWriter = new FileWriter(CLASS_FILE, true);
                aWriter.write("public   class   " + CLASS_NAME + "{");
                aWriter.write("public   void   println()   {");
                aWriter.write("System.out.println("=" + CLASS_NAME + "=");");
                aWriter.write("}}");
                aWriter.flush();
                aWriter.close();
            } catch (Exception e) {
                e.printStackTrace();
            }
        }
    
        public void compileClass() {
            String filePath = new File(CreateClass.class.getClassLoader()
                    .getResource("").getFile()).getAbsolutePath();
            String[] source = { "-d", filePath, new String(CLASS_FILE) };
            System.out.println("javac out:"
                    + com.sun.tools.javac.Main.compile(source));
        }
    
        public void runClass() {
            try {
                Class params[] = {};
                Object paramsObj[] = {};
                Class testClass = Class.forName(CLASS_NAME);
                Object iClass = testClass.newInstance();
                Method thisMethod = testClass.getDeclaredMethod("println", params);
                thisMethod.invoke(iClass, paramsObj);
            } catch (Exception e) {
                e.printStackTrace();
            }
        }
    }
    

      生成java文件,编译java文件,运行java类

      需要引入%JAVA_HOME%/lib/tools.jar

  • 相关阅读:
    N个数字每X个数字组成一组,求组数
    生成带文本的UIImage
    Linux创建环境变量(Mac OS)
    为UIView绘制单边的boder
    ecshop之随机文章
    微软继MVC5后,出现ASP.NET VNEXT
    本科毕业生转正之前谈待遇
    ecshop title优化
    百度地图开发之一】申请Key和配置初览显示地图
    项目总结—jQuery EasyUI-DataGrid 拼表及查看详情
  • 原文地址:https://www.cnblogs.com/feiling/p/2633542.html
Copyright © 2011-2022 走看看