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