我正在尝试:
1)从给定文件位置加载接口和实现类
2)创建一个具有与接口匹配的反射的代理对象,并将所有调用定向到实现类
这稍后用于使用 JUnit 进行测试。
问题:
但是,当我尝试创建代理对象时,我似乎遇到了问题。我得到了例外:
java.lang.IllegalArgumentException: interface Testing.Testable is not visible from class loader
...at Core.ProxyFactory.createProxy(ProxyFactory.java:26)
有问题的行如下:
Object obj = Proxy.newProxyInstance(implementationClass.getClassLoader(), new Class[]{interfaceClass}, forwarder);
类加载正确的方式?
我正在使用 URLClassLoader 加载我需要的类。代码片段如下:
URL url = new File(path).toURI().toURL();
URL[] urlList = {url};
// Create loader and load
ClassLoader classLoader = new URLClassLoader(urlList);
Class loadedClass = classLoader.loadClass (classname);
return loadedClass;
然而,这是正确的吗?这个片段会为每个类文件重复,所以我相信每次创建一个新的类加载器。这会导致我的问题吗?我该如何解决这个问题?
提前感谢您提供的任何帮助