博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Java URLClassLoader动态加载外部java代码
阅读量:5130 次
发布时间:2019-06-13

本文共 1640 字,大约阅读时间需要 5 分钟。

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
版权声明:本文为博主原创文章,转载请附上博文链接!

转载于:https://www.cnblogs.com/handsome1013/p/10179056.html

你可能感兴趣的文章
Linux环境下Redis安装和常见问题的解决
查看>>
玩转小程序之文件读写
查看>>
HashPump用法
查看>>
cuda基础
查看>>
virutalenv一次行安装多个requirements里的文件
查看>>
Vue安装准备工作
查看>>
.NET 母版页 讲解
查看>>
Android Bitmap 和 Canvas详解
查看>>
最大权闭合子图
查看>>
oracle 创建暂时表
查看>>
201421410014蒋佳奇
查看>>
导入导出数据库和导入导出数据库表
查看>>
linux下操作mysql
查看>>
【03月04日】A股滚动市盈率PE历史新低排名
查看>>
Xcode5和ObjC新特性
查看>>
jvm slot复用
查看>>
高并发系统数据库设计
查看>>
【转载】TCP协议疑难杂症全景解析
查看>>
实验室项目debug汇总
查看>>
subversion无法识别TortoiseSVN checkout的项目
查看>>