`
bjmike
  • 浏览: 282868 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

不同classloader 中类互访的问题

 
阅读更多
不同分支加载同一个class文件会被认为是不同的class,不可直接互相访问
比方说class A 分别被两个分支上的classLoader 加载,分别生成a1,a2两个实例,
如果两个实例都持有对方的引用, 在a1 中调 a2.f();或在a2中调a1.f();都会提示class not found

但是通过接口访问没问题,比方说A implements IA ,不同classloader 加载的类可以通过IA的引用互访

其原理是,classloader加载顺序为从父类到子类顺着继承关系一级一级的加载,如果在加载的过程中没有找到改class 则到父类里面寻找,平行的 classloader是不能够互访的。所以,实现方法是要先用一个公共接口的jar包。这个jar包放到父类里面。也就是osgi框架级别加载。
分享到:
评论

相关推荐

    探究java的ClassLoader及类变量初始化顺序

    在实际开发中,对ClassLoader的理解有助于解决一些特定场景的问题,比如热部署、插件系统或隔离不同版本的库。同时,掌握类变量初始化顺序可以避免因误解而导致的错误,特别是在多线程环境中,对静态变量的并发访问...

    ClassLoader类加载机制和原理详解

    在Java编程语言中,ClassLoader是核心组件之一,它负责加载类到JVM(Java虚拟机)中执行。本文将深入探讨ClassLoader的工作原理...同时,掌握双亲委派模型可以帮助解决类加载过程中的问题,避免出现类加载混乱的情况。

    JAVA ClassLoader 讲解 (类加载器)

    2. **扩展类加载器(Extension ClassLoader)**:它负责加载位于`-Djava.ext.dirs`系统属性所指定目录中的jar文件。 3. **应用程序类加载器(Application ClassLoader)**:也称为系统类加载器,它负责加载用户类...

    Java ClassLoader定制实例

    1. 安全性:自定义ClassLoader可能导致安全问题,因为它可以加载任意的类,因此需要确保加载的类是可信的。 2. 类的可见性:不同的ClassLoader加载的类相互之间默认是不可见的,除非使用` ProtectionDomain`进行设置...

    java ClassLoader机制及其在OSGi中的应用

    1. 每个OSGi bundle都有自己的ClassLoader,用于加载该bundle中的类,这使得不同bundle之间的类隔离得以实现,避免了类冲突。 2. OSGi的ClassLoader支持动态加载和卸载bundle,当bundle被激活或停用时,对应的类...

    ClassLoader类加载器

    在Java编程语言中,ClassLoader是一个至关重要的组成部分,它负责加载类到JVM(Java虚拟机)中。了解和掌握ClassLoader的工作原理以及如何自定义ClassLoader对于深入理解Java应用程序的运行机制非常有帮助。以下是对...

    ClassLoader运行机制 自己写的

    然而,对于Web应用程序,WebLogic创建了一个独立的WebApp ClassLoader,用于加载特定Web应用的类,这样可以隔离不同Web应用间的类,防止它们相互影响。 WebLogic的ClassLoader层次结构如下: 1. Bootstrap ...

    自定义classloader的使用

    在多版本库共存的项目中,自定义Classloader可以帮助我们隔离不同版本的类。每个版本的库可以有专属的Classloader,确保它们各自加载各自的类,防止版本冲突。 六、动态加载与卸载 自定义Classloader还可以实现...

    classloader

    在传统编程语言中,如C或C++,程序通常是一个单一的可执行文件,而Java则不同,它的编译结果是以平台无关的类文件格式存在。每个类文件对应于一个单独的Java类,且这些类文件不是一次性全部加载到内存中,而是按需...

    ClassLoader

    通过对`ClassLoader`的基本概念、工作原理、双亲委托机制以及不同类型的类加载器的了解,我们可以更好地理解Java类加载的过程及其背后的设计哲学。这对于深入理解Java虚拟机的内部机制以及开发高质量的应用程序都至...

    JVM ClassLoader简析

    这种委托加载机制保证了类的唯一性,防止了同一个类被不同ClassLoader加载两次的问题。 ClassLoader还有自定义的概念,允许开发者创建自己的ClassLoader来实现特定的加载逻辑。例如,从网络、数据库或特定文件系统...

    ClassLoader(类加载机制)1

    在Java中,类加载器主要有三层:Bootstrap ClassLoader(引导类加载器)、Extension ClassLoader(扩展类加载器)和App ClassLoader(系统类加载器)。Bootstrap ClassLoader负责加载JDK的核心库,Extension ...

    java中classLoader的使用

    Java中的类加载器(ClassLoader)是Java虚拟机(JVM)的一个重要组成部分,它负责将类的.class文件从文件系统或者网络中加载到内存中,并转换为对应的Class对象。类加载器的工作流程主要包括加载、验证、准备、解析...

    深入理解ClassLoader工作机制.docx

    开发者可以根据需求定制ClassLoader,以满足特定的加载需求,如加载动态生成的类或处理版本兼容问题。总的来说,深入理解ClassLoader的内部运作,有助于我们更好地理解和利用Java平台的强大功能。

    ClassLoader小例子

    - 示例可能还涉及到了对异常处理的演示,因为自定义加载过程中可能会遇到找不到类或非法类文件的问题。 了解和掌握ClassLoader的概念及其应用,对于理解和调试复杂的Java应用程序,尤其是涉及到动态加载和插件化...

    Java中ClassLoader类加载学习总结

    Java中ClassLoader类加载学习总结 ...ClassLoader类的应用非常广泛,例如在Web应用程序中,ClassLoader类可以用来加载不同类库的类,在Android应用程序中,ClassLoader类可以用来加载不同的apk文件等等。

    ClassLoader的 一些测试

    在Java编程语言中,...总的来说,深入理解ClassLoader的工作原理对于优化程序性能、构建灵活的插件系统和解决类冲突问题具有重要意义。通过测试和实践,我们可以更好地掌握ClassLoader的使用,提升Java编程的技能。

    【图解版】深入分析ClassLoader类加载工作机制

    【图解版】深入分析ClassLoader类加载工作机制,从原理到JVM的装载过程,详情分析了ClassLoader加载类以及自定义类加载器的过程,不可用于商业用途,如有版权问题,请联系删除!

Global site tag (gtag.js) - Google Analytics