使用的demo
他的demo有二个问题。
- 他只是demo用反射好使。
我们不可能要求所有开发都知道反射的使用,pass
看看这篇: springboot环境下相同类进行转换出现ClassCastException异常
他的意思,AclassLoad new=> Aobj 在 Aobj的方法中用 BclassLoad 引用的对象属于AclassLoad , 但是你用BclassLoad加载出来,他就不认识了。
这时你必须要用反射。如demo
其实ClassLoader,加载是使用loadClass 递归的加载到虚拟机中,同时他有缓存机制,
实现模拟tomcat热加载
请依赖hutool工具类
核心代码
package com.fucking.great.hotreload;
import cn.hutool.core.io.FileUtil;
import cn.hutool.core.io.IoUtil;
import cn.hutool.log.Log;
import cn.hutool.log.LogFactory;
import java.io.InputStream;
import java.net.URL;
import java.util.Date;
/**
* 热加载就这么简单。
* 需要注意每次都要新new HotReLoader();
* 否则会报
* java.lang.LinkageError: loader (instance of com/fucking/great/hotreload/HotReLoader): attempted duplicate class definition for name: "com/fucking/great/hotreload/DoHotReloadEntity"
*/
public class HotReLoader extends ClassLoader{
protected static Log logger = LogFactory.get<