SpringBoot自定义类加载器,项目打包成jar包后,加载不到Class

项目涉及需要留接口给第三方进行功能扩展,第三方实现统一的扩展接口后将扩展代码上传到了数据库,再执行扩展方法的时候再将扩展类加载到jvm内存。因为是加载项目外的class类,所以通过实现自定义类加载器继承了ClassLoader通过defineClass方法去实现外部类的加载。但是在通过spring-boot-maven-plugin插件打包后jar包内目录结构变化,项目中存在的类(如项目中统一的扩展类接口,依赖类等)都无法通过自定义类加载器加载到。

通过spring-boot-maven-plugin插件打包后jar包内目录结构

通过maven-jar-plugin插件打包后jar包内目录结构

解决方法 :不改变打包方式,通过继承线程上下文类加载器的方式,可以解决该问题

相关推荐
oddsand117 分钟前
Redis网络模型
java·数据库·redis
皮卡祺q22 分钟前
【redies0-导论】分布式系统的演进-引进redis原因
java·数据库·redis
roman_日积跬步-终至千里23 分钟前
如何分析复杂架构:一套真正能落地的方法
java·开发语言·架构
geovindu25 分钟前
go: Semaphore Pattern
开发语言·后端·设计模式·golang·企业级信号量模式
IT_陈寒26 分钟前
Redis内存用爆了,原来我们都忽略了这个配置
前端·人工智能·后端
武子康30 分钟前
Java-02 深入浅出MyBatis 3 快速入门:环境配置、项目创建与 CRUD 操作
java·后端
Don.TIk33 分钟前
ChapterOne-搭建项目骨架
java·spring·spring cloud·mybatis
Don.TIk34 分钟前
ChaperTwo-整合 SaToken 实现 JWT 登录功能
java·开发语言
qq_25183645734 分钟前
基于java Web汽车销售管理系统设计与实现
java·前端·汽车
南极企鹅38 分钟前
事务&@Transactional注解
java·数据库·spring·oracle·mybatis