zoukankan      html  css  js  c++  java
  • Java URLClassLoader动态加载外部java代码

    Java URLClassLoader动态加载外部java代码

    版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/ty497122758/article/details/77170901
    外部代码
    package priv.tuyou;

    public class Say {

    public void say(){

    System.out.println("say priv.tuyou.hello");
    }
    }

    存放路径


    动态加载示例
    import java.lang.reflect.InvocationTargetException;
    import java.lang.reflect.Method;
    import java.net.MalformedURLException;
    import java.net.URL;
    import java.net.URLClassLoader;

    import priv.tuyou.Say;

    public class URLPathClassLoader extends URLClassLoader{

    private String packageName = "priv.tuyou";

    public URLPathClassLoader(URL[] classPath, ClassLoader parent){

    super(classPath, parent);
    }

    @Override
    protected Class<?> findClass(String name) throws ClassNotFoundException {

    Class<?> aClass = findLoadedClass(name);
    if(aClass != null){

    return aClass;
    }
    if(!packageName.startsWith(name)){

    return super.loadClass(name);
    }
    return null;
    }

    public static void main(String[] args) throws MalformedURLException, ClassNotFoundException, SecurityException, NoSuchMethodException, InstantiationException, IllegalAccessException, IllegalArgumentException, InvocationTargetException {

    URL[] urls = {new URL("file://Users/apple/temp")};
    URLPathClassLoader urlPathClassLoader = new URLPathClassLoader(urls, getSystemClassLoader());
    Class say = urlPathClassLoader.findClass("priv.tuyou.Say");
    Method method = say.getMethod("say");
    Object instance = say.newInstance();
    method.invoke(instance);

    Say say2 = (Say)instance;
    say2.say();
    }
    }


    ---------------------
    作者:涂有
    来源:CSDN
    原文:https://blog.csdn.net/ty497122758/article/details/77170901
    版权声明:本文为博主原创文章,转载请附上博文链接!

  • 相关阅读:
    faster rcnn学习(三)
    too many values to unpack (expected 2)
    RuntimeWarning: overflow encountered in ubyte_scalars
    C#中excel读取和写入
    C#中使用Sql对Excel条件查询
    IIS上部署MVC网站,打开后ExtensionlessUrlHandler-Integrated-4.0解决方法IIS上部署MVC网站,打开后500错误
    C#微信公众平台账号开发,从零到整,步骤详细。
    VS快捷键大全
    ASP.NET将文件写到另一服务器
    开放api接口签名验证
  • 原文地址:https://www.cnblogs.com/handsome1013/p/10179056.html
Copyright © 2011-2022 走看看