运行时报错:同一个类 不能强制转换:cannot be cast to
报错信息:com.ccb.jawa.app.sys.model.UserInfo cannot be cast to com.ccb.jawa.app.sys.model.UserInfo

原因:项目中使用了spring-boot-devtools进行热部署,因为项目中的java文件随时可能会被修改,所以devtools为了热部署及时生效,这些java文件对于类会使用
org.springframework.boot.devtools.restart.classloader.RestartClassLoader类加载器进行加载。如果同时代码中使用反射等技术(我此次遇到的问题就是MybatisFlex查询)使用到项目中的类时,就会使用到AppClassLoader进行加载,进而造成本该是一个类,使用不同类加载器而出现不同类型的情况解决方案
方式一:将热部署的依赖注释掉,不使用它
xml<!-- 热部署 --> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-devtools</artifactId> <optional>true</optional> </dependency>在resource下创建META-INF/spring-devtools.properties
propertiesrestart.exclude.companycommonlibs=排除的jar包 restart.include.projectcommon=包含的jar包 // 使用restartClassLoader加载
启动时报错:扫描不到 bean
- 报错信息:No qualifying bean of type ‘XX’ available: expected at least 1 bean which qualifies as autowire candidate.
- 解决办法
- 在Mapper接口类上添加@Mapper注解
- 在启动类上添加@MapperScan注解
org.springframework.http.converter.HttpMessageNotReadableException: Required request body is missing
检查是不是@GetMapping + @RequestBody的组合,因为GET请求不能用@RequestBody
检查请求体是否为空,@RequestBody默认请求体不能为空,如果请求体为空时仍需要进入到接口中,则修改required参数为false
java@PostMapping("/getOrderList") public void getOrderList(@RequestBody(required = false) OrderReqVO orderReqVO){ if (orderReqVO == null){ orderReqVO = new OrderReqVO(); } }
springboot3.4.4打包时lombok报错的问题
问题原因:在使用start.spring.io创建springboot3.4.4项目时,自动在pom.xml中生成了maven-compiler-plugin的配置,但是该配置没有指定lombok的版本,所以可能导致依赖解析存在问题
原配置
xml<build> <plugins> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-compiler-plugin</artifactId> <configuration> <annotationProcessorPaths> <path> <groupId>org.projectlombok</groupId> <artifactId>lombok</artifactId> </path> </annotationProcessorPaths> </configuration> </plugin> <plugin> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-maven-plugin</artifactId> <configuration> <excludes> <!-- 移除不必要的Lombok排除配置, --> </excludes> </configuration> </plugin> </plugins> </build>解决方案:明确指定配置版本
xml<build> <plugins> <plugin> <groupId>top.qnmdmyy.plugins</groupId> <artifactId>docker-image-builder</artifactId> <version>1.0-SNAPSHOT</version> <configuration> <repositoryUrl>registry.cn-hangzhou.aliyuncs.com</repositoryUrl> <repositoryNamespace>projects_space</repositoryNamespace> <repositoryUsername>aliyun6967465092</repositoryUsername> <repositoryPassword>zhl0619..</repositoryPassword> </configuration> </plugin> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-compiler-plugin</artifactId> <version>3.11.0</version> <!-- 明确指定插件版本 --> <configuration> <annotationProcessorPaths> <path> <groupId>org.projectlombok</groupId> <artifactId>lombok</artifactId> <version>1.18.32</version> <!-- 指定Lombok版本 --> </path> </annotationProcessorPaths> </configuration> </plugin> <plugin> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-maven-plugin</artifactId> <configuration> <excludes> <!-- 移除不必要的Lombok排除配置, --> </excludes> </configuration> </plugin> </plugins> </build>参考文档