我试图通过获取它们的字节并使用反射来使用defineClass方法来动态地加载某些类。这是我的代码(这是一个循环)
Method m = java.lang.ClassLoader.class.getDeclaredMethod("defineClass", String.class, byte[].class, int.class, int.class);
m.setAccessible(true);
m.invoke(Main.class.getClassLoader(), className, classBytes, 0, classBytes.length);
但是,当一个类实现另一个类时,它将引发NoClassDefFoundError(尚未加载实现的类)。我不知道该怎么办,我尝试加载几次以解决此问题,但它不起作用。在加载它们之前,我还搜索过将所有类添加到类路径中,但是我不知道如何使用字节数组来做到这一点。
答案 0 :(得分:1)
动态类加载器是Java所做的。不需要绕过语言访问限制。以常规方式将SecureClassLoader
子类化。