urlclassloader.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

版权声明:本文为博主原创文章,转载请附上博文链接!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值