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

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

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

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

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

相关推荐
XS0301063 分钟前
Java 基础笔记(二)
java·笔记·python
Java编程爱好者3 分钟前
spring的logback引用application配置文件的变量
后端
papaofdoudou5 分钟前
AMD-V 嵌套分页白皮书翻译
java·linux·服务器
海寻山10 分钟前
Java 泛型 (Generic) 入门到精通:语法 + 原理 + 实战 + 避坑
java·windows·python
李日灐12 分钟前
<1>Linux基础指令:Linux 高频指令详解 + 文件与目录认知
linux·运维·服务器·开发语言·后端·命令
艾莉丝努力练剑13 分钟前
【Linux线程】Linux系统多线程(七):<线程同步与互斥>线程同步(下)
java·linux·运维·服务器·c++·学习·操作系统
云烟成雨TD15 分钟前
Spring AI Alibaba 1.x 系列【15】工具执行拦截器(ToolInterceptor)
java·人工智能·spring
ch.ju18 分钟前
Java程序设计(第3版)第二章——逻辑运算符
java
喜欢流萤吖~20 分钟前
SpringBoot 异步处理与线程池实战
java·开发语言
大罗LuoSir20 分钟前
分布式微服务全貌了解-整体架构、特征和需关注解决的问题
java·缓存·微服务·zookeeper·容器·服务发现·负载均衡