我正在尝试使用反射方法调用URLClassLoader,
我检查了文件中有一个声明的构造函数,
URLClassLoader(URL[] urls)
但是以下代码会导致wrong number of arguments
异常:
import java.io.*;
import java.net.*;
import java.lang.reflect.*;
public class Foo {
public static void main (String[] args)
{
try {
Method method = URLClassLoader.class.getMethod("newInstance", URL[].class);
URLClassLoader loader = (URLClassLoader) method.invoke (
new Object [] { new URL ("http://127.0.0.1/a.class") });
} catch (Exception e) {
e.printStackTrace ();
}
}
}
答案 0 :(得分:3)
您正在传递一个URL
对象来代替URL
s
您需要创建一个包含URL
的数组,并将该数组放在Object[]
数组中:
URLClassLoader loader = (URLClassLoader) method.invoke (
new Object [] {
new URL[] { new URL ("http://127.0.0.1/a.class") }
});