springboot升级到3.x + jdk升级到17

这篇具有很好参考价值的文章主要介绍了springboot升级到3.x + jdk升级到17。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

基础组件版本升级:

jdk由1.8升级到17

spring-boot由2.7.6升级到3.1.2版本

spring-cloud-alibaba由2021.0.4.0升级到2022.0.0.0-RC2版本

maven构建插件里的配置要改为17:

<plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-compiler-plugin</artifactId>
    <version>3.11.0</version>
    <configuration>
        <release>17</release>
        <encoding>UTF-8</encoding>
    </configuration>
</plugin>

javax相关的包要改为jakarta:

<!-- 废弃 -->
<dependency>
    <groupId>javax.servlet</groupId>
    <artifactId>javax.servlet-api</artifactId>
</dependency>

<!-- 改为 jakarta.servlet -->
<dependency>
    <groupId>jakarta.servlet</groupId>
    <artifactId>jakarta.servlet-api</artifactId>
</dependency>

Spring Boot3.0已经将依赖项从Java EE迁移到Jakarta EE API(主要是避免Oracle 的版权问题),所以要将项目中的 javax.servlet.* 改为 jakarta.servlet.* 

IDEA工具提供了迁移工具,可以较为方便的修改Jakarta

IDEA官方文档:Migrate | IntelliJ IDEA Documentation

java: 无法将类 org.springframework.boot.actuate.endpoint.web.servlet.webmvce,java,springboot,jdk,spring cloud,spring

log4j需要升级到2.19.0及以上版本:

<!-- log4j升级到2.19.0 -->
<dependency>
    <groupId>org.apache.logging.log4j</groupId>
    <artifactId>log4j-core</artifactId>
    <version>2.19.0</version>
</dependency>
<dependency>
    <groupId>org.apache.logging.log4j</groupId>
    <artifactId> ...... </artifactId>
    <version>2.19.0</version>
</dependency>

代码层面的一些问题:

1、org.springframework.web.filter.HttpPutFormContentFilter已经被废弃并移除了,可以使用org.springframework.web.filter.FormContentFilter来替代。
FormContentFilter类能够解析PUT和PATCH请求中的表单数据并将其作为请求参数传递给控制器方法。

// 如果之前过滤器配置了HttpPutFormContentFilter
@Bean
public FilterRegistrationBean<Filter> HttpPutFormContentFilter() {
    FilterRegistrationBean<Filter> registrationBean = new FilterRegistrationBean<Filter>();
    registrationBean.setFilter(new HttpPutFormContentFilter());
    registrationBean.addUrlPatterns("/*");
    registrationBean.setOrder(2);
    return registrationBean;
}

// 改成FormContentFilter
// FormContentFilter类能够解析PUT和PATCH请求中的表单数据并将其作为请求参数传递给控制器方法
@Bean
public FilterRegistrationBean<Filter> FormContentFilter() {
    FilterRegistrationBean<Filter> registrationBean = new FilterRegistrationBean<Filter>();
    registrationBean.setFilter(new FormContentFilter());
    registrationBean.addUrlPatterns("/*");
    registrationBean.setOrder(2);
    return registrationBean;
}

2、org.springframework.web.servlet.handler.HandlerInterceptorAdapter已经被废弃并移除了,可以使用org.springframework.web.servlet.handler.HandlerInterceptor接口来替代。 

@Component
public class CustomInterceptor implements HandlerInterceptor {

    @Override
    public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {
        HandlerInterceptor.super.preHandle(request, response, handler);
        return true;
    }

    @Override
    public void postHandle(HttpServletRequest request, HttpServletResponse response, Object handler, ModelAndView modelAndView) throws Exception {
        HandlerInterceptor.super.postHandle(request, response, handler, modelAndView);
    }

    @Override
    public void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex) throws Exception {
        HandlerInterceptor.super.afterCompletion(request, response, handler, ex);
    }
}

3、编译错误:

无法将类 org.springframework.boot.actuate.endpoint.web.servlet.WebMvcEndpointHandlerMapping中的构造器 WebMvcEndpointHandlerMapping应用到给定类型; 

WebMvcEndpointHandlerMapping构造方法是6个参数,检查一下,不要少传或多传了。

4、编译错误:

对于ServletRegistrationBean(com.alibaba.druid.support.http.StatViewServlet,java.lang.String), 找不到合适的构造器

druid版本升级到1.2.18,com.alibaba.druid.support.http.StatViewServlet 改为 com.alibaba.druid.support.jakarta.StatViewServlet

<dependency>
    <groupId>com.alibaba</groupId>
    <artifactId>druid</artifactId>
    <version>1.2.18</version>
</dependency>

5、编译错误:

不兼容的类型: com.alibaba.druid.support.http.WebStatFilter无法转换为jakarta.servlet.Filter

同上,druid版本升级到1.2.18,com.alibaba.druid.support.http.WebStatFilter 改为 com.alibaba.druid.support.jakarta.WebStatFilter 

6、mybatis版本问题:

java.lang.NoClassDefFoundError: org/springframework/core/NestedIOException

需要升级mybatis的版本 ,对应版本如下:

java: 无法将类 org.springframework.boot.actuate.endpoint.web.servlet.webmvce,java,springboot,jdk,spring cloud,spring文章来源地址https://www.toymoban.com/news/detail-786149.html

到了这里,关于springboot升级到3.x + jdk升级到17的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • java: 无法访问org.springframework.context.ApplicationContext

    初学Spring遇到如下报错: java: 无法访问org.springframework.context.ApplicationContext   错误的类文件: /E:/Maven/repository/org/springframework/spring-context/6.0.9/spring-context-6.0.9.jar!/org/springframework/context/ApplicationContext.class     类文件具有错误的版本 61.0, 应为 52.0     请删除该文件或确保该文件位

    2024年02月03日
    浏览(52)
  • java: 无法访问org.springframework.boot.SpringApplication解决办法

    作者简介 :一名后端开发人员,每天分享后端开发以及人工智能相关技术,行业前沿信息,面试宝典。 座右铭 :未来是不可确定的,慢慢来是最快的。 个人主页 :极客李华-CSDN博客 合作方式 :私聊+ 这个专栏内容 :BAT等大厂常见后端java开发面试题详细讲解,更新数目10

    2024年02月11日
    浏览(72)
  • java: 无法访问org.springframework.web.bind.annotation.RequestMapping

    报错: Error:(3, 47) java: 无法访问org.springframework.web.bind.annotation.RequestMapping 原因: 可能是jdk1.8与springboot3.0.1版本不匹配,把对应的springboot版本降版本即可。 解决:springboot版本改成较低的版本2.7.1,导入,问题解决  

    2024年02月11日
    浏览(53)
  • 解决出现的java: 无法访问org.springframework.boot.SpringApplication问题~

    错误描述如下所示: 错误原因:版本号匹配不一致导致的, 61.0对应jdk17,52.0对应jdk8 。 而我本地的java为java8,因此需要降低版本,即可解决该问题

    2024年02月07日
    浏览(54)
  • SpringBoot2.7升级项目到Springboot3.1踩坑指南(jdk17/jdk21)

    由于SpringBoot3.x全面拥抱JDK17,兼容jdk21,jdk17乃是大势所趋。这里是从SpringBoot2.7--SpringBoot3.1踩坑指南。 提前阅读:jdk8升级JDK17避坑指南(适用于SpringBoot2.3—SpringBoot2.7升级) 国内顶级开源项目升级到springBoot3情况,可以作为升级SpringBoot3的风向标。仅对比国内规模使用,落地过

    2024年03月09日
    浏览(68)
  • java: 无法访问org.springframework.boot.SpringApplication 错误的类文件

    提示:这里简述项目相关背景: java: 无法访问org.springframework.boot.SpringApplication 错误的类文件: /D:/Environment/maven-3.8.1/myRepository/org/springframework/boot/spring-boot/3.0.2/spring-boot-3.0.2.jar!/org/springframework/boot/SpringApplication.class 类文件具有错误的版本 6 提示:这里描述项目中遇到的问题:

    2024年02月12日
    浏览(51)
  • Error-(3, 32) java- 无法访问org.springframework.boot.SpringApplication问题解决

    通过spring initializr创建的springboot项目,生成项目后无法正常运行。 报错如下: spring-boot-starter-parent版本为3.0.4, jdk版本为1.8,默认pom文件指定的jdk版本为 17。 问题原因应该为jdk的版本不兼容。jdk版本编码及对应关系可以参考网页https://stackoverflow.com/questions/9170832/list-of-java-class

    2024年02月11日
    浏览(48)
  • 【异常解决】java: 无法访问org.springframework.boot.SpringApplication的解决方案

    本文目录 一、背景描述 二、报错原因 三、解决方案 Spring官网:Spring | Home 通过Spring官网初始化一个新的SpringBoot项目,如下图所示。 关键信息: maven项目,Java语言,SpringBoot版本号,项目信息,打包方式,Java版本 ,然后点击下边最左侧的 GENERATE CTRL + 回车 ,即可生成一个

    2023年04月09日
    浏览(45)
  • 已解决java: 无法访问org.springframework.boot.SpringApplication异常的正确解决方法,亲测有效!!!

    已解决java: 无法访问org.springframework.boot.SpringApplication异常的正确解决方法,亲测有效!!! java: 无法访问org.springframework.boot.SpringApplication 对于无法访问org.springframework.boot.SpringApplication的问题 下滑查看解决方法 有几种可能的解决方法: 确保你的项目中已经添加了Spring Boot相关

    2024年02月02日
    浏览(55)
  • 启动springboot项目时报错:​无法访问org.springframework.web.bind.annotation.GetMapping …具有错误的版本 61.0,应为52.0​

    报错原因:jdk版本1.8 与 spring boot 3.0.1 版本不匹配 解决方案:将springboot版本降级即可(比如2.5.4就是稳定版本)。如下图:  注意:修改完成后刷新下maven,如下图。 启动成功后,如下图。  由上图可知,启动时携带的端口是8080,context path是空,也就是说访问时一个斜杠就

    2024年02月11日
    浏览(56)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包