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

  • 相关阅读:
    JavaScript事件基础知识总结【思维导图】
    浮动广告 相关源码
    网页设计中常用的Web安全字体
    WEB 字体
    js文件被浏览器缓存的思考
    HTML5 LocalStorage
    CXF 中自定义SOAPHeader
    CXF拦截器(Interceptor)LoggingInInterceptor
    WebService注解汇总
    spring websocket 和socketjs实现单聊群聊,广播的消息推送详解
  • 原文地址:https://www.cnblogs.com/feiling/p/2633542.html
Copyright © 2011-2022 走看看