网站首页 > 开源技术 正文
背景介绍
在项目中使用的是Spring Boot 2.5.15 ,引入的Minio版本是8.3.0,在项目启动之后报错如下。
很懵X,为什么会出现这样的问题呢?通过POM依赖审查,发现代码中所依赖的okhttp是4.8.1版本,并没有报错中的3.14.9版本。
这就更懵了?为什么会这样子呢?
各种百度之后大部分的解决方案都是说通过POM依赖的方式来解决。如下所示。
<!--文件存储器调用-->
<dependency>
<groupId>io.minio</groupId>
<artifactId>minio</artifactId>
<version>8.3.0</version>
<exclusions>
<exclusion>
<groupId>com.squareup.okhttp3</groupId>
<artifactId>okhttp</artifactId>
</exclusion>
</exclusions>
</dependency>
<dependency>
<groupId>com.squareup.okhttp3</groupId>
<artifactId>okhttp</artifactId>
<version>4.8.1</version>
</dependency>
但是明明分析之后,我们看到的minio的依赖中所依赖的就是okhttp4.8.1,为什么要脱裤子放屁呢?解释是说排除依赖重新依赖然后让框架重新依赖。但是实际上并没有什么卵用。最终的依赖方式变成了如下的样子。当你启动项目的时候还是会报错。
如何解决呢?
找了一圈发现,原来是因为在项目中使用了dependencyManagement依赖管理器,而依赖管理器只会管理依赖,并不会在乎版本的变化。然后在父级项目中我们引入了如下的依赖。
<!-- SpringBoot的依赖配置-->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-dependencies</artifactId>
<version>2.5.15</version>
<type>pom</type>
<scope>import</scope>
</dependency>
在这个依赖中我们找到了问题的关键。进入到依赖之后,发现原来dependencies的依赖中,已经依赖了Okhttp的3.14.9版本。这就导致我们在子项目中无论如何引用,这个依赖都会默认被添加进去,只不过不使用的时候,就是一个单纯的依赖罢了。
这里我们又两种方式可以解决,一种是将项目结构调整,将spring-boot-dependencies去除,然后根据需要引入自己的依赖。
第二种也是最直接暴力的方式,就是对spring-boot-dependencies.pom文件进行修改,需要注意,在修改的时候编译器会提示是否要修改,我们选择强制修改就可以了。不过这种修改方式可能会影响到其他项目的依赖。所以慎用。
结论
修改完成之后查看项目依赖会发现依赖已经发生了变化,这个时候就说明我们的修改是生效了,我们就可以放心的使用Minion了。
猜你喜欢
- 2024-09-28 我放弃了okhttp、httpClient,选了这个神仙工具
- 2024-09-28 android学习,OkHttp,拦截器(okhttp自定义拦截器放在哪一层)
- 2024-09-28 Okhttp上传图片失败,居然是服务端的锅?(一)
- 2024-09-28 工作日报 2021.10.20 OkHttp3错误异常:unexpected end of stream
- 2024-09-28 深入浅出 OkHttp 源码解析及应用实践
- 2024-09-28 用OkHttp实现WebSocket长连接(利用输入实现预期结果的相互关联或者相作用的一组活动 描述的是)
- 2024-09-28 干货-okHttp的优点-收藏了(水瓶座女的缺点和优点)
- 2024-09-28 软件更新丨OkHttp 4.0.0 RC 3 发布,从 Java 切换到 Kotlin
- 2024-09-28 开发者必备的Android开发资源之OkHttp
- 2024-09-28 HTTP客户端连接,选择HttpClient还是OkHttp?
你 发表评论:
欢迎- 03-19基于layui+springcloud的企业级微服务框架
- 03-19开箱即用的前端开发模板,扩展Layui原生UI样式,集成第三方组件
- 03-19SpringMVC +Spring +Mybatis + Layui通用后台管理系统OneManageV2.1
- 03-19SpringBoot+LayUI后台管理系统开发脚手架
- 03-19layui下拉菜单form.render局部刷新方法亲测有效
- 03-19Layui 遇到的坑(记录贴)(layui chm)
- 03-19基于ASP.NET MVC + Layui的通用后台开发框架
- 03-19LayUi自定义模块的定义与使用(layui自定义表格)
- 最近发表
-
- 基于layui+springcloud的企业级微服务框架
- 开箱即用的前端开发模板,扩展Layui原生UI样式,集成第三方组件
- SpringMVC +Spring +Mybatis + Layui通用后台管理系统OneManageV2.1
- SpringBoot+LayUI后台管理系统开发脚手架
- layui下拉菜单form.render局部刷新方法亲测有效
- Layui 遇到的坑(记录贴)(layui chm)
- 基于ASP.NET MVC + Layui的通用后台开发框架
- LayUi自定义模块的定义与使用(layui自定义表格)
- Layui 2.9.11正式发布(layui2.6)
- Layui 2.9.13正式发布(layui2.6)
- 标签列表
-
- jdk (81)
- putty (66)
- rufus (78)
- 内网穿透 (89)
- okhttp (70)
- powertoys (74)
- windowsterminal (81)
- netcat (65)
- ghostscript (65)
- veracrypt (65)
- asp.netcore (70)
- wrk (67)
- aspose.words (80)
- itk (80)
- ajaxfileupload.js (66)
- sqlhelper (67)
- express.js (67)
- phpmailer (67)
- xjar (70)
- redisclient (78)
- wakeonlan (66)
- tinygo (85)
- startbbs (72)
- webftp (82)
- vsvim (79)
本文暂时没有评论,来添加一个吧(●'◡'●)