一个类新加载覆盖原始加载的类的问题 我用ASM修改了类,生成了类byte[],最后通过ClassLoader defineClass方法生成了类,请问我怎样将新生成的类,代替Web已经加载的类呢?? 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 首先用不同加载器加载的类是不同的,你不可能用一个新加载的类代覆盖旧类。对于这个问题可能的解决方法是手动加载你的新类,比如: Object instance = new YourClassLoader().defineClass(bytes).newInstance();Method m = instance.getclass().getmethod("method").m.invoke(m, params);只能通过全部的反射来做,应该是你想要的吧。否则会报CAST错的。 不是我想要的.我的意思是:例如Tomcat的加载器加载了A.class,而我修改了A.class,产生了个新的class了,请问我该怎样将新的class覆盖原来的呢??新的A.class我是用不同的classLoader产生的.如果用同一加载器产生的可以覆盖的话,请问我有byte[]的类字节数组,怎样用A.class原来的加载器生成class呢? 把这个类都用你自定义的同一个classloader 加载 就可以了吧 web 加载器 ClassLoader 的defineClass方法是受保护的,怎样将byte[] 转成 class呢?? 把byte[]写成.class文件,替换原来的类文件。 如果要动态替换的话。1、替换原来的类加载器2、用javaagent 怎样替换原来的加载器?javaagent咋样用? 怎样替换要你自己在Tomcat想办法。javaagent是java的启动参数。详细用法见API文档里关于Package java.lang.instrument 如果你需要动态加载和覆盖,你应该不断new新的ClassLoader出来,必须用这个新的ClassLoader来定义你的类。这样就可以每次替换了你原始代码看到的是接口或者基类, 看来,这问题是解决不了的了,改问一个别的问题!JSP里怎样判断客户端与服务器端是否已断开连接..ASP里有个IsClient....属性.. Rmi的对象在服务器上生成stub使用了服务器的外网ip 关于线程的小问题,求解释,谢谢!! 请教一个String数组遍历加分割的问题 怎么控制好处理大量数据时的意外错误 java支持的证书格式除了x.509以外还有哪些? 日期的国际化--只显示年月 java如何读取文件属性? 请问,如何用\\ 替换\ ? 各位大侠!请问在java中的如何在一按钮上显示提示信息(在线等待,谢谢!) Graphics绘图环境的问题,急,在线等待! java 学软件的去什么类型的单位好呢?
对于这个问题可能的解决方法是手动加载你的新类,比如: Object instance = new YourClassLoader().defineClass(bytes).newInstance();
Method m = instance.getclass().getmethod("method").
m.invoke(m, params);只能通过全部的反射来做,应该是你想要的吧。否则会报CAST错的。
1、替换原来的类加载器
2、用javaagent
怎样替换原来的加载器?
javaagent咋样用?
javaagent是java的启动参数。详细用法见API文档里关于Package java.lang.instrument