关于开发中的版本问题的一点小建议

简介: 关于开发中的版本问题的一点小建议

关于开发中的版本问题的一点小建议

■ 本文是以springboot项目开发中遇到的问题为例:


1、背景:

学习springboot 视频的时候,我选的一个视频时叩丁狼的蓝老师的视频,理由:老师的声音非常温柔,nice~

视频的拍摄时间是2017年的,那年流行的(视频老师的springboot版本) 是版本1.5.7.RELEASE,而现在,是2022年,springboot都出版本3了,

但是我又喜欢听老师的声音,于是我自个使用的是版本2.6.5的,然后问题来了:


2、需求:springboot 整合 德鲁伊连接池、整合mybatis

(1)需求1:springboot 整合 德鲁伊连接池【没问题】:

  • pom文件中,使用的德鲁伊版本:1.1.17;数据库连接驱动的版本是父项目统一管理的版本;jdbc的版本也是父项目统一管理的版本
  • 运行结果:成功,即springboot 整合 Druid 成功


(2)需求2:springboot 整合 mybatis【问题来了】:

  • pom文件中,使用的mybatis集合springboot的版本是最新的 2.2.2,报错:
■ 报错信息:
java.lang.annotation.AnnotationFormatError: Invalid default: public abstract java.lang.Class org.mybatis.spring.annotation.MapperScan.factoryBean()
......


■ 解决方案:无解,内网、外网,把能搜的地方全搜了,只找到两个说法。
说法1:把mybatis-spring集成的jar包导入问题便解决,~but,我明明一大早就导入了。
说法2:版本问题,emmm,于是,我就在maven仓库试了两三个最新版本之后,网搜,看到一个版本就试试,结果,快emo了,还是报同一个错误。

3、我开始了自我摸索解决bug之路

(1)首先排除自己的代码出错的情况:

我决定,减低springboot项目的版本跟视频一致,为1.5.7.RELEASE,同时更改Druid和mybatis-springboot集成的版本,同一保持跟视频一致。其中Druid的版本为:1.1.4;而mybatis-spring的版本为:1.3.0。

  • 验证:成功通过,证明代码是没有问题的

☺ 补充一个小知识:

当idea中maven项目报错的时候,看一眼idea底部是不是有进度条,进度条的状态是正在下载。有下载的进度条,解决错误的方式就是等待。没有则需手动搜索解决bug。

★ 可能刚建立完springboot 项目,maven会爆红;

★ 可能在pom文件中导入新的依赖时,maven会爆红;

★ 可能是在pom文件中更改整个springboot的版本时,maven会爆红;

✿ 解决:先看看底部有无下载进度条,有着等进度条下载完成即可,没有则尝试刷新一下maven项目。


(2)尝试再把springboot项目版本替换为2.6.5:

  • 结果:报错
//报druid的错误:
java.lang.IllegalStateException: Failed to introspect Class [com.alibaba.druid.spring.boot.autoconfigure.DruidDataSourceAutoConfigure] from ClassLoader 
Caused by: java.lang.NoClassDefFoundError: org/springframework/boot/autoconfigure/jdbc/metadata/DataSourcePoolMetadataProvider

■ 解决:更换druid 版本:

  • 尝试更换德鲁伊版本为最新版本-1.2.8
  • 结果:问题解决了哈哈哈


4、关于此次版本乌龙的小心得

  • 小建议:时间比较赶,看项目视频学习完,需要立马去赶项目,建议:视频版本挑比较新的,然后版本跟视频一致即可。
  • 小心得:关于版本问题的解决思路:依赖的版本的替换项目的版本也可替换■ 这个版本问题产生情况:
  • 依赖之间的版本冲突、项目和依赖之间的版本冲突。
  • ■ 关键:如何解决版本问题:
  • 前提是先验证自己的代码没有问题(上文提供了一种验证方法)
  • 看报错信息:控制台的报错(控制台没有报错信息,找找日志文件),去搜解决方案


8.png


  • 我常搜解决方案的地方:
    ① 直接百度搜;② csdn(看一两个即可,基本解决方案都擂台,不用再浪费时间了) ③ 博客园 ④ 知乎
    ④ 外网-Stack Overflow(这个网站非常nice~,国外最大的问答平台)
  • 搜索之后的解决方案,没能解决,此时---需要冷静下来,自己一步一步分析:
  • 报错之前,干了什么----思路是倒序着去排除错误,最后干的嫌疑最大,从后往前排除



★ 我本次问题的解决真实情况:

是通过减低版本和视频老师一致的时候,在排除代码本身问题之后,把版本替换为原先自己想要的版本,通过控制台的报错提示,成功解决了问题哈哈哈。

☺ 真实情况:【本次项目真实bug来自项目版本

  • 我验证完成之后,我需要替换项目为原来版本的时候,版本是2.6.5, 我懒得复制粘贴,手打输入成2.5.6,然后通过控制台的提示,就成功解决了,
    替换成2.6.5版本,就又可以让人emo啦!


■ 倒序排错思路:

① 首先验证排除掉是自己的代码本身的问题,让问题锁定到pom文件中的依赖上

② 我的需求是springboot 整合 德鲁伊连接池、整合mybatis,在pom.xml 最后引入的依赖是mybatis-springboot,运行报错,网搜解决方案---提示引入mybatis-springboot的依赖和该依赖的版本【非该问题,问题依旧存在

③ 倒序---springboot 整合 德鲁伊连接池,自己引入的依赖中含有版本的是Druid,更换Druid版本


★ 建议更换依赖的版本的参考标准:

  • maven 显示的 Compile Dependencies 和 Provided Dependencies,版本之间的参考;
  • 因为是springboot 项目,考虑一下springboot官网给的依赖之间参考
  • 若是前面都无法提供参考,建议从maven提供的最新依赖开始尝试更换


如果本文对你有帮助的话记得给一乐点个赞哦,感谢!

目录
相关文章
|
编译器 程序员 C++
2023-4-6-C++11、C++14、C++17、C++20版本新特性系统全面的学习!(二)
2023-4-6-C++11、C++14、C++17、C++20版本新特性系统全面的学习!
411 0
2023-4-6-C++11、C++14、C++17、C++20版本新特性系统全面的学习!(二)
|
2月前
|
开发框架 JavaScript 前端开发
Electron 重大更新,33.0.0版本发布,带来多项新特性与改进!
本文介绍了 Electron 33.0.0 版本的重要更新,包括核心组件的升级(Chromium、Node.js 和 V8),新增功能(如 app.setClientCertRequestPasswordHandler 和 View.setBorderRadius),重要改进和主要问题修复。建议开发者尽快升级,以享受更强大的性能和功能。
227 0
Electron 重大更新,33.0.0版本发布,带来多项新特性与改进!
|
7月前
|
小程序 IDE 开发工具
社区每周丨IDE 3.7.4 Beta 版本上线及基础库更新至 2.8.10(6.5-6.9)
社区每周丨IDE 3.7.4 Beta 版本上线及基础库更新至 2.8.10(6.5-6.9)
87 11
|
7月前
|
小程序 IDE 开发工具
社区每周丨基础库更新至 2.8.8及IDE3.6.3 Beta 版本上线(4.3-4.7)
社区每周丨基础库更新至 2.8.8及IDE3.6.3 Beta 版本上线(4.3-4.7)
82 11
|
7月前
|
小程序 API 开发者
社区每周丨小程序 CLI 1.9.4 版本上线(9.18-9.22)
社区每周丨小程序 CLI 1.9.4 版本上线(9.18-9.22)
179 11
|
7月前
|
资源调度 大数据 流计算
CloudEon V1.3.0版本发布!
CloudEon V1.3.0版本发布!2023 年最后一个版本了,感谢朋友们的支持,祝大家新年快乐🎉🎉,咱们明年再见!
|
存储 安全 编译器
2023-4-6-C++11、C++14、C++17、C++20版本新特性系统全面的学习!(三)
2023-4-6-C++11、C++14、C++17、C++20版本新特性系统全面的学习!
149 0
|
存储 编译器 C++
2023-4-6-C++11、C++14、C++17、C++20版本新特性系统全面的学习!(四)
2023-4-6-C++11、C++14、C++17、C++20版本新特性系统全面的学习!
367 0
|
存储 安全 编译器
2023-4-6-C++11、C++14、C++17、C++20版本新特性系统全面的学习!(一)
2023-4-6-C++11、C++14、C++17、C++20版本新特性系统全面的学习!
414 0
|
测试技术 开发者
Guitarpro 8.1升级版本全新的简谱功能介绍
Guitarpro 8.1版本中,已成功推出全新的简谱功能!Guitar Pro是一款非常流行的音乐制谱软件,它支持各种乐器的制谱。在思杰马克丁引入这款软件之后,为它专门定制了中文版,并针对中国用户重新定价。GuitarPro经过5年研发,于2022年发布了全新的8系列版本。在不到1年的时间内,Guitar Pro又增加了广大中国用户期盼已久的简谱功能。
495 0

热门文章

最新文章