• springboot2.7.10升级到3.0.8版本


    一、背景

    由于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)
    
    • 1

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

    		<dependency>
                <groupId>org.mapstructgroupId>
                <artifactId>mapstruct-jdk8artifactId>
                <version>${mapstruct.version}version>
            dependency>
            <dependency>
                <groupId>org.mapstructgroupId>
                <artifactId>mapstruct-processorartifactId>
                <version>${mapstruct.version}version>
                <scope>providedscope>
            dependency>
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11

    将上面依赖改成如下:

    		<dependency>
                <groupId>org.mapstructgroupId>
                <artifactId>mapstructartifactId>
                <version>${mapstruct.version}version>
            dependency>
    
    • 1
    • 2
    • 3
    • 4
    • 5
  • 相关阅读:
    给出一个数组,如 [7864, 284, 347, 7732, 8498],现在需要将数组中的数字拼接起来,返回「最大的可能拼出的数字」
    Openlayers 使用天地图Web服务
    生活中常见的嵌入式产品都有哪些?
    vue3瀑布流布局(使用 Vue 3 框架的单文件组件格式(Single-File Component)编写的)
    java计算机毕业设计ssm的KTV点歌系统(源码+系统+mysql数据库+Lw文档)
    创建commons和cart模块
    linux-守护进程daemon
    超简单集成 HMS ML Kit 实现最大脸微笑抓拍
    java-php-python-绿色生活基于PS、DW的绿色环保宣传网站计算机毕业设计
    jaeger-ui项目win系统安装依赖报错问题
  • 原文地址:https://blog.csdn.net/hmq1350167649/article/details/132874961