java 动态编译

Posted xiaofei001

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了java 动态编译相关的知识,希望对你有一定的参考价值。

1.第一种方式:JavaCompiler+Runntime


public static void run() {
        JavaCompiler compiler = ToolProvider.getSystemJavaCompiler();
        int res = compiler.run(null,null,null,"G:/github/src/com/reflect/Abc.java");
        System.err.println(res == 0?"成功":"失败");
        Runtime runtime = Runtime.getRuntime();
        try {
            Process process = runtime.exec("java -cp G:/github/src/com/reflect/");
            BufferedReader reader = new BufferedReader(new InputStreamReader(process.getInputStream()));
            String temp;
            while ((temp = reader.readLine())!= null){
                System.err.println(temp);
            }
        } catch (IOException e) {
            e.printStackTrace();
        }
    }

2.第二种方式:URLClassLoader+反射


public static void run2()  throws Exception {
        URL[] urls = new URL[]{new URL("file:/"+"G:/github/src/com/reflect/"),new URL("file:/"+"G:/github/src/com/net/v1/")};
        System.err.println(Arrays.toString(urls));
        URLClassLoader loader = new URLClassLoader(urls);
        Class<?> abc = loader.loadClass("com.reflect.Abc");
        Method main = abc.getMethod("main", String[].class);
        main.invoke(null,(Object) new String[]{});
    }

以上是关于java 动态编译的主要内容,如果未能解决你的问题,请参考以下文章

错误记录Android Studio 编译报错 ( Could not determine java version from ‘11.0.8‘. | Android Studio 降级 )(代码片段

java 动态片段实例化

79 动态编译与动态运行

JAVA之AOP

动态编译JAVA代码并执行

Java动态编译