OSGi 如何解决问题1将使用 OSGi 自定义类加载器从捆绑包中加载的类转换为从 rt.jar 加载的类?rt.jar 是否也加载了自定义类加载器,而不是系统类加载器?
UPD1
由于 ClassLoader.java 中的以下代码,我似乎无法使用自定义类加载器加载 rt.jar 的大部分部分:
private ProtectionDomain preDefineClass(String name, ProtectionDomain protectionDomain) {
...
if ((name != null) && name.startsWith("java.")) {
throw new SecurityException("Prohibited package name: " +
name.substring(0, name.lastIndexOf('.')));
}
...
}
[1] 问题如下:使用不同类加载器加载的类被 jvm 视为完全不同的类,即使它们的字节码完全相同,因此,例如,当我们有类rt.jar!/SomeClass
并在其中派生它时bundle.jar!/SomeClassChild
,我们如果它们是由不同的类加载器加载的,则无法SomeClassChild
转换为。SomeClass