zoukankan      html  css  js  c++  java
  • 动态编译

     下面的demo就涵盖了动态编译和运行类的过程

    package 动态编译;

    import java.lang.reflect.Method;
    import java.net.URL;
    import java.net.URLClassLoader;

    import javax.tools.JavaCompiler;
    import javax.tools.ToolProvider;

    public class Demo {

    public static void main(String[] args) throws Exception {
    JavaCompiler compiler=ToolProvider.getSystemJavaCompiler();

    int result=( compiler.run(null,null, null,"G:/test.java"));
    System.out.println(result==0?"编译成功":"编译失败");
    // //1:通过runtime.getRuntime运行启动好的进程运行
    // Runtime run=Runtime.getRuntime();
    // Process process =run.exec("java -cp c:/myjava HelloWorld");
    // InputStream io=process.getInputStream();
    // BufferedReader bufferedReader=new BufferedReader(new InputStreamReader(io));
    // String info="";
    // while((info= bufferedReader.readLine())!=null) {
    // System.out.println(info);
    // }
    //2通过反射运行编译的类‘
    URL [] urls=new URL[] {new URL("file:/"+"C:/myjava/")};
    URLClassLoader classLoader=new URLClassLoader(urls);
    Class c=classLoader.loadClass("test");
    Method c1= c.getMethod("main", String[].class);
    c1.invoke(null, (Object)new String[] {"aa","bb"});
    //注意要加Object,否则会理解为传入aa,bb两个参数了,而不是一个数组
    }
    }

  • 相关阅读:
    webpack
    Js数组和字符串常用方法
    Vue.js 2.0 快速上手
    雅虎前端优化的35条军规
    前端问题大杂烩
    Java和js的区别,以及Java和c的区别
    前后端联调
    99%的人都理解错了HTTP中GET与POST的区别
    vue项目目录
    vuex入门
  • 原文地址:https://www.cnblogs.com/henuliulei/p/9571809.html
Copyright © 2011-2022 走看看