使用反射从ClassLoader获取defineClass时的NoSuchMethodException

时间:2015-04-16 01:00:59

标签: java reflection classloader

我尝试使用反射从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$AppClassLoader.defineClass(java.lang.String, java.lang.reflect.Array, int, int)

失败了

它似乎不合适Array.class,但如果是这样,我不知道那里需要什么。

1 个答案:

答案 0 :(得分:4)

ClassLoader.defineClassbyte数组作为其第二个参数,而不是Array类型的对象。这就是你需要的:

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