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

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

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

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

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

相关推荐
好家伙VCC2 分钟前
# 发散创新:用 Rust构建高性能游戏日系统,从零实现事件驱动架构 在现代游戏开发中,**性能与可扩展性**是核心命题。传统基于
java·python·游戏·架构·rust
爱笑的源码基地9 分钟前
门诊his系统源码,中西医结合的数字化门诊解决方案
java·spring boot·源码·二次开发·门诊系统·云诊所系统·诊所软件源码
庞轩px10 分钟前
缓存Key设计的“七要七不要”
java·jvm·redis·缓存
小璐资源网10 分钟前
Java 21 新特性实战:虚拟线程详解
java·开发语言·python
SimonKing21 分钟前
全网爆火的OpenClaw保姆级教程Linux版,它来了。
java·后端·程序员
于慨29 分钟前
tauri
java·服务器·前端
WZTTMoon30 分钟前
从互斥锁到无锁,Java 20年并发安全进化史
java·python·安全
青柠代码录36 分钟前
【Linux】常用命令:sort
后端
2501_9181269141 分钟前
学习所有6502写游戏控制器的语句
java·linux·网络·汇编·嵌入式硬件
青春易逝丶1 小时前
策略模式
java·开发语言·策略模式