Java 当使用反射从类加载器获取defineClass时,NoSuchMethodException

Java 当使用反射从类加载器获取defineClass时,NoSuchMethodException,java,reflection,classloader,Java,Reflection,Classloader,我试图使用反射从类加载器获取defineClass方法 ClassLoader cl = this.getClass().getClassLoader(); Method m = cl.getClass().getMethod("defineClass", new Class[] { String.class, Array.class, int.class, int.class }); 但是如果出现NoSuchMethodException:sun.misc.Launcher$AppClass

我试图使用反射从类加载器获取
defineClass
方法

ClassLoader cl = this.getClass().getClassLoader();
Method m = cl.getClass().getMethod("defineClass", new Class[] { String.class, Array.class, int.class, int.class });
但是如果出现
NoSuchMethodException:sun.misc.Launcher$AppClassLoader.defineClass(java.lang.String、java.lang.reflect.Array、int、int)


它似乎不喜欢
Array.class
,但如果喜欢,我不知道那里需要什么。

ClassLoader.defineClass
字节
数组作为第二个参数,而不是
数组
类型的对象。这就是您需要的:

Method m = ClassLoader.class.getDeclaredMethod("defineClass", String.class, byte[].class, int.class, int.class);

有趣的这里实际上发生了两件事……除了需要字节[]。类之外,cl.getClass().equals(ClassLoader.class);//错误的这是因为所讨论的类加载器可能是类加载器的一个子类。所以它是一个不同的类,所以我希望该检查返回false!