踩坑pf4j之差点摔电脑

本文记录了作者在使用pf4j框架进行jar动态加载时遇到的困难,包括在网上找到的资料不足,以及在构建插件模块时的两个关键坑点:插件jar包缺少`extensions.idx`文件和manifest中必要属性。通过解决这些问题,最终成功实现了pf4j动态加载插件。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

领导想要在项目中实现jar动态加载,并且推荐使用pf4j这个框架,让我先研究研究。本想着this is so  easy! U are kidding me。结果搞了一天,心中万只草泥马奔腾...网上对这个框架的资料也不多,试着跟着某些博主的步骤去做,但还是在主程序中找不到jar包中的插件,无语了...气煞我也

搞了两天,没办法了,试着在官网中的demo找突破口,结果找到了。。。嘻嘻,看下我是怎样平坑的。

第一步,没什么特别的坑,正常地构建接口模块,添加pf4j依赖,定义接口并生成jar包。

第二步,坑之所在。构建插件模块,添加第一步生成的接口jar包和pf4j为依赖,实现接口,添加@Extensions注解。

很多同学以为上面这样就已经可以了,生成插件jar包,结果。。。当然是掉坑了

坑就在插件模块的build.gradle文件中。看下图

第一点,红框部分的注解处理是必须要添加的,不要以为只添加了pf4j依赖就可以了。不然你生成的jar包中的 META-INF目录下是没有extensions.idx这个文件的,这文件里只有一行,就是插件实现类的全类名,pf4j就是靠着这个实例化你的插件的。

第二点,生成插件jar包时必须带有manifest中的这两个属性,pf4j会根据这两个属性判断这个jar包是否合法。

以上两点就是坑,就是坑,就是坑...

第三步,也没有什么特别要注意的地方,建立项目,添加接口jar包、logback框架(pf4j的运行需要这个日志库),在项目根目录新建plugins目录,把插件jar放到plugins目录下。点击运行,一切OK,感觉空气都清新了。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值