两个项目依赖同一个jar包不同版本怎么整合

qq_33474460 2017-11-02 12:21:16
比如,我一个项目用spring4.0的包,里面有个类是这个项目所要的,另一个项目用spring4.01里面的一个类,这两个类分别属于各自版本里的,就是没有一个版本共有他们,去掉任何一个都不行,如果同时放一起会报冲突吧,怎么解决这个问题
...全文
10161 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
xieyuantang 2020-11-13
  • 打赏
  • 举报
回复
呵呵呵 55555555555555555555555555555
冰思雨 2020-11-05
  • 打赏
  • 举报
回复
如果两个项目都使用的是spring的话,要研究一下spring容器的加载过程了,看看自定义的类加载器放在哪个地方配置一下会比较合适。
冰思雨 2020-11-05
  • 打赏
  • 举报
回复
这种情况的解决方案,一直都很单一: 1. 如果两个项目,你都有源码的话,整合之后,选择高版本的jar包,把依赖低版本jar包的源代码进行升级,因为jar包版本都是向前兼容的。即使有了变动那也是个别使用方式出现了变化,你去查一下新版本的jar包中,同样功能的新的使用方式,进行更改即可。都是搞技术的,查看jar包的api文档,应该可以解决。 2.如果上面那种方案实施起来和重新开发一遍差不多的话,只能自定义类加载了。你自己定义一个类加载器,里面设置另外一个老版本jar包的加载路径(与新jar包不在用一个目录下面),这个自定义的类加载器里面要重写findClass方法,把那些依赖老jar包的类都用自定义类加载器进行加载,其余的使用parent加载器进行加载。双亲加载模型知道吗?这个好像不太常用,但是,会用的话,应该会比较好解决问题。我要是你就把版本冲突的jar都找出来,然后,按照两个项目的依赖关系分别建立两个目录,每个目录都建立一个自定义加载器对象进行单独的加载处理,然后,再弄一个自定义加载器对象,根据不同项目的类选择上面两个不同的加载器对象作为parent加载器进行对象的加载。
KeepSayingNo 2020-11-03
  • 打赏
  • 举报
回复
你的parent的pom文件里面的version管理里面填不同的版本号就行了
yrftc 2017-11-02
  • 打赏
  • 举报
回复
终于知道了 谢谢
define_us 2017-11-02
  • 打赏
  • 举报
回复
不嫌丑陋的话,就是手动用classloader去加载你需要的那个类?
qq_33474460 2017-11-02
  • 打赏
  • 举报
回复
高版本对低版本做更改的啊,低版本里面有个类,在高版本里不存在,用低版本的报类找不到异常,同样用低版本的话高版本里的一个在低版本也没有,同样报类找不到
soton_dolphin 2017-11-02
  • 打赏
  • 举报
回复
你先确定高版本是否兼容低版本的功能,高版本有没有对低版本进行删除或者修改,高版本的改动对低版本有什么影响。如果没有影响的话,可以舍弃低版本,用高版本重新构建那个项目
枫醉秋 2017-11-02
  • 打赏
  • 举报
回复
寻找高版本支持的对应方法,高版本删除了肯定会提供对应的解决办法的

62,625

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧