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

  • 相关阅读:
    Release COM Objects in AE
    图像相关系数
    Geoprocessor edit the featureclasses in memmory
    NetLogo AStar path finding
    IDL+C#三种调用方式
    Dictionary is not like a array
    C# DataGridView 禁止列排序
    工作总结
    (转)常见数据库设计(1)——字典数据
    碎碎念(3)
  • 原文地址:https://www.cnblogs.com/feiling/p/2633542.html
Copyright © 2011-2022 走看看