springboot2.7.10升级到3.0.8版本

题外话

如果各位客官有需要开发一些小小需求,可以私我哦,承接小需求开发,或问题定位(仅限java),价格私聊哈

一、背景

由于spring-web5.3.25版本为高危漏洞,需要升级到6.0.0版本,故需要将springboot升级到3.0.8,一劳永逸。不过springboot3.0版本后jdk要求jdk17,故需要将项目的jdk也一起升级到jdk17。

二、升级后出现问题

1. Resource 和PostConstruct注解报错误

原因:升级后,javax下的所有包全部都被移到了jakarta
解决方法:import javax.annotation.Resource; 改成import jakarta.annotation.Resource;

2. lombok的@SneakyThrows出现异常

问题:升级后,代码里使用了@SneakyThrows注解,编译时报了如下异常:Error during the transformation of ‘com.xxx.xxx.CreateSqlTest’; post-compiler ‘lombok.bytecode.SneakyThrowsRemover’ caused an exception: java.lang.IllegalArgumentException: Unsupported class file major version 61
原因:springboot 版本和lombok版本不兼容
解决方法:
将lombok版本升级到1.18.26(原来版本是1.18.12)

3.mapstruct的mapper注解找不到

问题:编译出现如下异常

java: Internal error in the mapping processor: java.lang.NullPointerException: Cannot invoke "java.net.URL.toExternalForm()" because "resource" is null  	at org.mapstruct.ap.internal.processor.DefaultVersionInformation.createManifestUrl(DefaultVersionInformation.java:182)  	at org.mapstruct.ap.internal.processor.DefaultVersionInformation.openManifest(DefaultVersionInformation.java:153)  	at org.mapstruct.ap.internal.processor.DefaultVersionInformation.getLibraryName(DefaultVersionInformation.java:129)  	at org.mapstruct.ap.internal.processor.DefaultVersionInformation.getCompiler(DefaultVersionInformation.java:122)  	at org.mapstruct.ap.internal.processor.DefaultVersionInformation.fromProcessingEnvironment(DefaultVersionInformation.java:95)  	at org.mapstruct.ap.internal.processor.DefaultModelElementProcessorContext.<init>(DefaultModelElementProcessorContext.java:50)  	at org.mapstruct.ap.MappingProcessor.processMapperElements(MappingProcessor.java:218)  	at org.mapstruct.ap.MappingProcessor.process(MappingProcessor.java:156)  	at org.jetbrains.jps.javac.APIWrappers$ProcessorWrapper.process(APIWrappers.java:206)  	at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)  	at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:77)  	at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)  	at java.base/java.lang.reflect.Method.invoke(Method.java:568)  	at org.jetbrains.jps.javac.APIWrappers$1.invoke(APIWrappers.java:362)  	at jdk.proxy2/org.mapstruct.ap.MappingProcessor.process(Unknown Source)  	at jdk.compiler/com.sun.tools.javac.processing.JavacProcessingEnvironment.callProcessor(JavacProcessingEnvironment.java:1023)  	at jdk.compiler/com.su.tools.javac.processing.JavacProcessingEnvironment.discoverAndRunProcs(JavacProcessingEnvironment.java:939)  	at jdk.compiler/com.sun.tools.javac.processing.JavacProcessingEnvironment$Round.run(JavacProcessingEnvironment.java:1267)  	at jdk.compiler/com.sun.tools.javac.processing.JavacProcessingEnvironment.doProcessing(JavacProcessingEnvironment.java:1382)  	at jdk.compiler/com.sun.tools.javac.main.JavaCompiler.processAnnotations(JavaCompiler.java:1234)  	at jdk.compiler/com.sun.tools.javac.main.JavaCompiler.compile(JavaCompiler.java:916)  	at jdk.compiler/com.sun.tools.javac.api.JavacTaskImpl.lambda$doCall$0(JavacTaskImpl.java:104)  	at jdk.compiler/com.sun.tools.javac.api.JavacTaskImpl.invocationHelper(JavacTaskImpl.java:152)  	at jdk.compiler/com.sun.tools.javac.api.JavacTaskImpl.doCall(JavacTaskImpl.java:100)  	at jdk.compiler/com.sun.tools.javac.api.JavacTaskImpl.call(JavacTaskImpl.java:94)  	at org.jetbrains.jps.javac.JavacMain.compile(JavacMain.java:237)  	at org.jetbrains.jps.incremental.java.JavaBuilder.lambda$compileJava$2(JavaBuilder.java:524)  	at org.jetbrains.jps.incremental.java.JavaBuilder.invokeJavac(JavaBuilder.java:587)  	at org.jetbrains.jps.incremental.java.JavaBuilder.compileJava(JavaBuilder.java:522)  	at org.jetbrains.jps.incremental.java.JavaBuilder.compile(JavaBuilder.java:365)  	at org.jetbrains.jps.incremental.java.JavaBuilder.doBuild(JavaBuilder.java:290)  	at org.jetbrains.jps.incremental.java.JavaBuilder.build(JavaBuilder.java:244)  	at org.jetbrains.jps.incremental.IncProjectBuilder.runModuleLevelBuilders(IncProjectBuilder.java:1519)  	at org.jetbrains.jps.incremental.IncProjectBuilder.runBuildersForChunk(IncProjectBuilder.java:1149)  	at org.jetbrains.jps.incremental.IncProjectBuilder.buildTargetsChunk(IncProjectBuilder.java:1299)  	at org.jetbrains.jps.incremental.IncProjectBuilder.buildChunkIfAffected(IncProjectBuilder.java:1114)  	at org.jetbrains.jps.incremental.IncProjectBuilder.buildChunks(IncProjectBuilder.java:885)  	at org.jetbrains.jps.incremental.IncProjectBuilder.runBuild(IncProjectBuilder.java:467)  	at org.jetbrains.jps.incremental.IncProjectBuilder.build(IncProjectBuilder.java:197)  	at org.jetbrains.jps.cmdline.BuildRunner.runBuild(BuildRunner.java:150)  	at org.jetbrains.jps.cmdline.BuildSession.runBuild(BuildSession.java:357)  	at org.jetbrains.jps.cmdline.BuildSession.run(BuildSession.java:179)  	at org.jetbrains.jps.cmdline.BuildMain$MyMessageHandler.lambda$channelRead0$0(BuildMain.java:218)  	at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1136)  	at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:635)  	at java.base/java.lang.Thread.run(Thread.java:833)

解决方法:
将mapstruct版本升级到1.4.1.final或者更新的版本,然后更新依赖
原来的依赖为:

		<dependency>
            <groupId>org.mapstruct</groupId>
            <artifactId>mapstruct-jdk8</artifactId>
            <version>${mapstruct.version}</version>
        </dependency>
        <dependency>
            <groupId>org.mapstruct</groupId>
            <artifactId>mapstruct-processor</artifactId>
            <version>${mapstruct.version}</version>
            <scope>provided</scope>
        </dependency>

将上面依赖改成如下:

		<dependency>
            <groupId>org.mapstruct</groupId>
            <artifactId>mapstruct</artifactId>
            <version>${mapstruct.version}</version>
        </dependency>
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

颜艾青

你的鼓励将是我创作的最大动力!

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值