Java 类装入器问题

Java 类装入器问题,java,classloader,Java,Classloader,两个类别装载机CL1和CL2装载两个不同的类别C1和C2。 我想从C1调用C2中的一个方法。这可能通过反射实现吗 我得到一个提示,使用引导类加载程序加载的helper类可以解决这个问题,因为这两个类都可以访问引导类加载程序。但不知道怎么办 有人能指导我吗?这些类是由两个不同的类加载器加载的,这并不妨碍调用。您不需要反射(但如果愿意,您可以这样做)。助手类必须是公共父类加载器(特别是引导类加载器)加载的公共超类或超接口。如果没有这样的助手类,那么您必须使用反射。您想调用静态方法还是实例方法?如果是

两个类别装载机CL1和CL2装载两个不同的类别C1和C2。 我想从C1调用C2中的一个方法。这可能通过反射实现吗

我得到一个提示,使用引导类加载程序加载的helper类可以解决这个问题,因为这两个类都可以访问引导类加载程序。但不知道怎么办


有人能指导我吗?

这些类是由两个不同的类加载器加载的,这并不妨碍调用。您不需要反射(但如果愿意,您可以这样做)。

助手类必须是公共父类加载器(特别是引导类加载器)加载的公共超类或超接口。如果没有这样的助手类,那么您必须使用反射。

您想调用静态方法还是实例方法?如果是实例方法,那么如何声明包含C2实例的变量<代码>C2 obj?在这两种情况下,问题是C1的文本中没有C2,C1无法编译。如果它以某种方式编译,那么您有另一个加载了CL1的C2。无论如何,向我们展示文本,告诉我们错误发生的原因和位置。目前我正在从类加载器CL2加载我的类C1。我想删除这一步。我是通过反射来实现的,CL2.loadClass(C2)来自C1,因为我的类也是由CL2加载的。更正:只有C2必须实现由公共父类加载器加载的接口。然后我就可以访问C2了。