2 gqgq0311 gqgq0311 于 2014.06.14 10:32 提问

java ClassLoader怎么手动加载2个相互引用的类

public class A{
private B b;
}

public class B{
private A a;
}

程序中只有这2各类的class文件的2进制数据(2个byte[]),怎么使用classloader加载这2个类呢.
因为涉及到了A类需要B类 B类需要A类,如果使用简单的defineClass会出ClassNotFoundException异常.

Csdn user default icon
上传中...
上传图片
插入图片
准确详细的回答,更有利于被提问者采纳,从而获得C币。复制、灌水、广告等回答会被删除,是时候展现真正的技术了!
其他相关推荐
不同classloader装载的类不能互相访问?
一,有两个术语,一个叫“定义类加载器”,一个叫“初始类加载器”。 比如有如下的类加载器结构: bootstrap   ExtClassloader     AppClassloader     -自定义clsloadr1     -自定义clsloadr2 如果用“自定义clsloadr1”加载java.lang.String类,那么根据双亲委派最终bootstrap会加载此类,那
java两个类相互持有引用的小问题
今天在写一个小程序中遇到一个问题,我想在两个类中相互持有引用,比如: 1. 一个类是画板,另一个类是画板中一个图形; 2. 画板必须持有图形的引用才能绘制图形; 3. 图形希望能够根据自身一些属性改变画板中其他的图形,所以需要持 有画板的引用来操作画板的资源。 于是就有如下代码: 画板: public class TankWar extends Frame { ...
【java】自定义ClassLoader 加载外部类和jar文件
我们写的程序,默认会编译src下的。java文件,但是如果一个类不在这个项目的src下,怎么在本项目内new出它的一个实例?这就需要自定义一个ClassLoader,让它去加载指定位置的class,因为项目中默认的ClassLoader只能加载src下文件编译后形成的class文件。 有几个概念需要强调一下: 1,ClassLoader加载的是字节码(.class),不是源文件(.java),
Java中static变量相互引用导致的Bug
Bug来源:     这个问题是在实现storm慢请求报警功能时,MailCache类引用了Environments的静态方法。 // class MailCache private static final UrlMap DEFAULT_URLMAP = Environments.getDefaultUrlMap(); 在Environments类中,我想在类被初始化时就开一个
Java获得指定ClassLoader所加载的类列表
     一直想实现像DriverManager那样的getConnection方法,通过此方法就可以获得连接,而且还不用指定Driver,但前提是Driver已经通过Class.forName()或new Driver()进行了加载。今天终于得以实现。      package quiz;import java.lang.reflect.Field;public class
java自定义ClassLoader加载指定的class文件
继承ClassLoader并且重写findClass方法就可以自定义一个类加载器,具体什么是类加载器以及类加载器的加载过程与顺序下次再说,下面给出一个小demo首先定义一个类,比如MyTest,并且将其编译成class文件,然后放到一个指定的文件夹下面,其中文件夹的最后几层就是它的包名,这里我将这个编译好的类放到 : /Users/allen/Desktop/cn/lijie/MyTest.cla
ClassLoader加载类
ClassLoader加载类的原理 1、原理介绍 ClassLoader使用的是双亲委托模型来搜索类的,每个ClassLoader实例都有一个父类加载器的引用(不是继承的关系,是一个包含的关系),虚拟机内置的类加载器(Bootstrap ClassLoader)本身没有父类加载器,但可以用作其它ClassLoader实例的的父类加载器。当一个ClassLoader实例需要加载某个类
Java运行时动态加载类之ClassLoader加载class及其依赖jar包
需求场景是:通过ClassLoader动态加载外部class文件,class文件又依赖某个具体jar包,需要动态加载jar包,采用URLClassLoader。 1、xml配置文件 ETLEnc.jar say 放在D:\\tmp\\目录下; 2、User.class文件放在D:\\tmp\\目录下,依赖ETLEnc.jar也放在D:\\tmp\\目录下,Use
Java运行时动态加载类之URLClassLoader
需求场景:通过URLClassLoader从jar文件中加载类并创建实例,可实现运行时动态加载 1、要加载的jar: 1)接口类IC package cn.fjs; public interface IC { public void action(); } 2)实例类C package cn.fjs; public class C implements IC{ public v
Java 自定义 ClassLoader 实现隔离运行不同版本jar包的方式
1. 应用场景有时候我们需要在一个 Project 中运行多个不同版本的 jar 包,以应对不同集群的版本或其它的问题。如果这个时候选择在同一个项目中实现这样的功能,那么通常只能选择更低版本的 jar 包,因为它们通常是向下兼容的,但是这样也往往会失去新版本的一些特性或功能,所以我们需要以扩展的方式引入这些 jar 包,并通过隔离执行,来实现版本的强制对应。2. 实现在 Java 中,所有的类默认通