美文网首页
Java动态编译的使用

Java动态编译的使用

作者: 手打小黑板 | 来源:发表于2020-02-12 10:15 被阅读0次
package com.liming.dynamiccompile;

import javax.tools.JavaCompiler;
import javax.tools.ToolProvider;
import java.lang.reflect.Constructor;
import java.lang.reflect.InvocationTargetException;
import java.lang.reflect.Method;
import java.net.MalformedURLException;
import java.net.URL;
import java.net.URLClassLoader;

public class DynamicCompile {
    public static void main(String[] args){
        System.out.println("Hello DynamicCompile");

        JavaCompiler javaCompiler = ToolProvider.getSystemJavaCompiler();

        if(0 == javaCompiler.run(null,null,null,"res/HelloWorld.java")){
            try {

                URLClassLoader urlClassLoader = new URLClassLoader(new URL[]{new URL("file://"+System.getProperty("user.dir")+"/res/HelloWorld")});
                Class<?> xlass = urlClassLoader.loadClass("HelloWorld");


                Constructor<?> c = xlass.getConstructor();
                Object o = c.newInstance();
                Method m = xlass.getMethod("main", String[].class);

                Object[] argx = {new String[]{"人在江湖飘飘","飞出恩怨两刀","江湖飘"}};
                m.invoke(o,argx);

            } catch (ClassNotFoundException e) {
                e.printStackTrace();
            } catch (NoSuchMethodException e) {
                e.printStackTrace();
            } catch (InstantiationException e) {
                e.printStackTrace();
            } catch (IllegalAccessException e) {
                e.printStackTrace();
            } catch (InvocationTargetException e) {
                e.printStackTrace();
            } catch (MalformedURLException e) {
                e.printStackTrace();
            }

        }





    }
}

相关文章

  • Java动态编译的使用

  • 反射&动态代理

    反射 Java 的动态性体现在:反射机制、动态执行脚本语言、动态操作字节码 反射:在运行时加载、探知、使用编译时未...

  • Java的动态机制---动态编译

    Java的动态机制---动态编译1 作用 客户写代码,动态编译。 服务器动态加载某些类文件 2 两种做法 通过Ru...

  • Java动态编译那些事

    jdk1.6中添加了编译API, 我们可以在java代码中调用编译API动态编译JAVA源文件, 也就是运行时编译...

  • java 动态编译

    为了更深入的了解动态代理,手动实现一下动态代理,其中涉及动态编译的东西,记录一下入门点推荐先看这个文章 Java ...

  • Java动态编译

    写工具时遇到一个需求,程序跑起来之后,可以在程序上写代码并编译执行,这种情况就用到了Java动态编译运行 流程 获...

  • GDAL-java环境配置

    gdal在java环境下使用,需要将gdal编译为java可用的版本,具体编译步骤,以后再补,今天先使用别人编译好...

  • GDAL-java环境配置

    gdal在java环境下使用,需要将gdal编译为java可用的版本,具体编译步骤,以后再补,今天先使用别人编译好...

  • Python 常用静态代码检查工具简介

    对于我这种习惯了 Java 这种编译型语言,在使用 Python 这种动态语言的时候,发现错误经常只能在执行的时候...

  • java反射

    java编译与运行 编译:静态加载 如 new创建对象运行:动态加载 如 Class.forName()(得到...

网友评论

      本文标题:Java动态编译的使用

      本文链接:https://www.haomeiwen.com/subject/uayqfhtx.html