当前位置: 首页 > news >正文

springboot2.7.16到3.5.16,srpingcloud2021.0.1->2025.0.3,jdk1.8->17,升级记录一(从踩屎坑到上岸的辛酸历程)

1、修改对应的maven版本号

2、报错:'dependencies.dependency.version' for org.apache.httpcomponents:httpclient:jar is missing.

原因:没有明确指定版本

将 Spring Boot 从 2.7.x 升级到 3.x 版本,一个关键变化是Spring Framework 6 移除了对 Apache HttpClient 4 的支持,全面转向了 HttpClient 5。因此,原来的org.apache.httpcomponents:httpclienthttpmime依赖(属于 HttpClient 4)需要被替换为 HttpClient 5 的依赖。(在 Spring Boot 项目中,建议优先通过导入spring-boot-dependenciesBOM 来统一管理所有 Spring 及关联依赖的版本。如果 BOM 中已定义了httpclient5的版本,则可以省略<version>标签。)

3、'dependencies.dependency.(groupId:artifactId:type:classifier)' must be unique: com.fasterxml.jackson.core:jackson-databind:jar -> duplicate declaration of version ${version.jackson.core} @ com.xmair:mfehome:1.0.0, D:\work\sourceCode\serviceCode\mfehome4.0-jdk17\pom.xml, line 178, column 15

原因:这个错误表明你的 Maven POM 文件中jackson-databind依赖被重复声明了,并且在重复声明的地方,其版本号使用了属性占位符${version.jackson.core}

解决:移除多余的引用

4、maven clean的时候报错:[ERROR] Failed to execute goal org.apache.maven.plugins:maven-compiler-plugin:3.8.1:compile (default-compile) on project common: Fatal error compiling: 无效的标记: --release -> [Help 1] [ERROR] [ERROR] To see the full stack trace of the errors, re-run Maven with the -e switch. [ERROR] Re-run Maven using the -X switch to enable full debug logging. [ERROR] [ERROR] For more information about the errors and possible solutions, please read the following articles: [ERROR] [Help 1] http://cwiki.apache.org/confluence/display/MAVEN/MojoExecutionException [ERROR] [ERROR] After correcting the problems, you can resume the build with the command [ERROR] mvn <args> -rf :common

原因:这个错误表明Maven 编译器插件无法识别--release参数,通常是因为JDK 版本过低maven-compiler-plugin版本不兼容

4、报错:class lombok.javac.apt.LombokProcessor (in unnamed module @0x39e75e88) cannot access class com.sun.tools.javac.processing.JavacProcessingEnvironment (in module jdk.compiler) because module jdk.compiler does not export com.sun.tools.javac.processing to unnamed module @0x39e75e88

原因:Lombok 与 JDK 版本不兼容导致的。

解决方案:升级 Lombok 版本

5、报错:

原因:由于2修改了HttpClient 5,所以需要修改包路径

主要改动点

  1. 包名变更org.apache.httporg.apache.hc.core5/org.apache.hc.client5.http

  2. API 变化NameValuePairCookieRequestConfig等类的包路径和构造方式都有变化

  3. 内部类问题HttpEntityEnclosingRequestBase在 HttpClient 5 中已移除,需改用其他方式

6、程序包org.apache.commons.codec.binary不存在

引入

<dependency>
<groupId>commons-codec</groupId>
<artifactId>commons-codec</artifactId>
<version>1.19.0</version>
</dependency>

7、程序包javax.servlet.http不存在

修改为jakarta.servlet.http

8、import sun.misc.BASE64Decoder;

import sun.misc.BASE64Encoder; 提示找不到符号

原因:JDK 9+ 移除了sun.misc.BASE64Encodersun.misc.BASE64Decoder,这些是 JDK 内部 API,在 JDK 9 之后被标记为不推荐使用并最终移除。

使用Base64.getEncoder()、 Base64.getDecoder()替代

9、MsgStruct.java:[27,31] No property named "msgId" exists in source parameter(s). Did you mean "messageUrl"?

@Override
@Mappings({
@Mapping(source = "msgId", target = "pkid"),
})
MsgDto toDto(MfImappstatusDto entity);

MfImappstatusDto extends MfImappstatus MfImappstatusDto中没有msgId,但是MfImappstatus中有这个字段

问题原因

MapStruct 在编译时只会扫描MfImappstatusDto自身声明的属性,不会自动识别父类MfImappstatus中的字段。虽然运行时子类可以访问父类的字段,但 MapStruct 的编译期检查无法看到继承的字段。

10、报错:

@Override @Mappings({ @Mapping(source = "appPkid", target = "mfAppPkid"), @Mapping(source = "helpInfoName", target = "helpinfoName"), @Mapping(source = "helpInfoUrl", target = "helpinfoUrl"), @Mapping(source = "helpInfoTypePkid", target = "mfHelpinfoTypePkid"), }) MfHelpinfo toEntity(HelpInfoDto dto); Unknown property "mfAppPkid" in result type MfHelpinfo. Did you mean "null"?

MfHelpinfo 有mfAppPkid,只是MfHelpinfo 用@Data

常见原因

1. Lombok 版本与 MapStruct 版本不兼容

@Data生成的 getter/setter 需要 MapStruct 能够识别。如果版本不兼容,MapStruct 无法识别这些方法。

解决方案:升级 Lombok 和 MapStruct 版本

<properties> <!-- 确保使用兼容的版本 --> <lombok.version>1.18.32</lombok.version> <org.mapstruct.version>1.6.3</org.mapstruct.version> </properties> <dependencies> <!-- Lombok --> <dependency> <groupId>org.projectlombok</groupId> <artifactId>lombok</artifactId> <version>${lombok.version}</version> <scope>provided</scope> </dependency> <!-- MapStruct --> <dependency> <groupId>org.mapstruct</groupId> <artifactId>mapstruct</artifactId> <version>${org.mapstruct.version}</version> </dependency> <dependency> <groupId>org.mapstruct</groupId> <artifactId>mapstruct-processor</artifactId> <version>${org.mapstruct.version}</version> <scope>provided</scope> </dependency> </dependencies> <build> <plugins> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-compiler-plugin</artifactId> <version>3.11.0</version> <configuration> <source>17</source> <target>17</target> <annotationProcessorPaths> <!-- Lombok 必须在 MapStruct 前面 --> <path> <groupId>org.projectlombok</groupId> <artifactId>lombok</artifactId> <version>${lombok.version}</version> </path> <!-- MapStruct --> <path> <groupId>org.mapstruct</groupId> <artifactId>mapstruct-processor</artifactId> <version>${org.mapstruct.version}</version> </path> <!-- Lombok + MapStruct 绑定 --> <path> <groupId>org.projectlombok</groupId> <artifactId>lombok-mapstruct-binding</artifactId> <version>0.2.0</version> </path> </annotationProcessorPaths> </configuration> </plugin> </plugins> </build>
http://www.jsqmd.com/news/1185456/

相关文章:

  • 基于含噪监督的卫星影像树木计数
  • 深入解析栈缓冲区溢出:ASan原理、实战与防范指南
  • 地球作为一个意识体:基于自由能原理与复杂系统理论的推演
  • kali中使用nmcli命令进行网络配置
  • C++异常处理全解析:从语法到RAII与异常安全实战
  • 天津百达翡丽回收价格查询与靠谱回收平台实测排行(2026年7月最新数据) - 诚收名表回收平台
  • 重塑你的Xfce桌面:从轻量到精致的现代化改造
  • 关于C++面向对象设计的访问性问题详解
  • LeCun团队通用AI新突破:分层预测与能量基模型解析
  • TokenSpeed:专门为 Agentic Workloads 设计的大模型推理框架
  • 基于YOLOv8的安全手套检测系统:从原理到部署实战
  • TVA具身智能范式研究进展(5)
  • 线性回归原理与回归线数学推导详解
  • 心电基础笔记:心电导联体系
  • 【安心陪诊 Agent】Node.js 20 + Express 4 实战:Web Demo 与规则 Agent 架构
  • 超低功耗电源管理系统设计与优化实践
  • AI Agent沙箱逃逸事件激增320%(2024 Q1数据):构建不可绕过的行为围栏技术白皮书
  • Docker化Flask API:从本地开发到生产部署的完整实践
  • 2026 年 7 月新发布:秀英热门的张拉膜停车棚哪家好供货商全面解析与选购指南,别急着选,这3家所谓的“龙头”正等着割你韭菜 - 行业推荐官【认证】
  • Unity游戏异常状态特效系统:从粒子到Shader的实战开发指南
  • 八大深度学习核心算法:从CNN到Transformer的完整实战指南
  • Pandas多维聚合生产实践:从groupby到高可靠指标计算
  • k8s实战-Secret(类型详解、安全实践与生命周期管理)
  • 【关注可白嫖源码】--课程设计--毕业设计--29730基于hadoop的校园餐厅菜品推荐系统设计与实现(案例分析)
  • C++ CAD数据交换:libdxfrw库读写DXF/DWG文件实战指南
  • JavaScript 单线程语义与 Node.js 多进程架构:语言规则与运行环境的协同分析
  • LegalGraphRAG: Multi-Agent Graph Retrieval-Augmented Generation for Reliable Legal Reasoning
  • 高通QAIRT工具链:移动端AI模型量化与性能优化实战
  • 高压安全隔离系统设计与ISOM8710+PIC18F25K80应用
  • C++银行模拟系统实战:从面向对象设计到数据持久化