我试过这个,但在调用时得到一个ClassNotFoundException:
Class.forName("com.AClass", false, mySpecialLoader)
Brian Deterl.. 5
ClassLoader必须调用defineClass来获取Class.根据JavaDoc for defineClass:
如果name不为null,则它必须等于byte数组指定的类的二进制名称.
如果名称为null,则它将从字节码中获取.所以你可以返回任何你想要的类,只要它叫做com.AClass.换句话说,您可以拥有com.AClass的多个版本.你甚至可以使用像JavaAssist这样的东西来动态创建一个类.
但这并没有解释ClassNotFoundException - 听起来你的类加载器没有返回任何东西.
ClassLoader必须调用defineClass来获取Class.根据JavaDoc for defineClass:
如果name不为null,则它必须等于byte数组指定的类的二进制名称.
如果名称为null,则它将从字节码中获取.所以你可以返回任何你想要的类,只要它叫做com.AClass.换句话说,您可以拥有com.AClass的多个版本.你甚至可以使用像JavaAssist这样的东西来动态创建一个类.
但这并没有解释ClassNotFoundException - 听起来你的类加载器没有返回任何东西.