SprintBoot2报错汇总

2023-07-29,,

报错1:SpringBoot找不到bean

Unable to start ServletWebServerApplicationContext due to missing ServletWebServerFactory bean

缺少注解 @SpringBootApplication


报错2:Maven Process terminated

Maven 编译遇到 Process terminated

xml文件标签重复、格式不规范


报错3:Not registered via @EnableConfigurationProperties

给UserBean添加@ConfigurationProperties时,编译错误,是因为没有被添加为组件。@Component可以解决


报错4:Junit测试,使用 @SpringBootTest 爆红字,Cannot solve symbol

网上搜了很多方法,主要有

①移动test位置到main中
②<scope>test</scope> 注释掉
③idea配置中删除 SpringBootTest.class 配置项
导入的Junit版本冲突,看一下自己的SpringBoot依赖版本


错误5:浏览器访问 “Whitelabel Error Page“

看看是不是Application 启动类 的位置不对,启动类与扫描包同级


报错6:运行时异常 UnsupportedClassVersionError

java: java.lang.UnsupportedClassVersionError: org/springframework/boot/configurationprocessor/ConfigurationMetadataAnnotationProcessor has been compiled by a more recent version of the Java Runtime (class file version 61.0), this version of the Java Runtime only recognizes class file versions up to 52.0

原因:

高版本的编译后文件,无法在低版本环境运行

那问题来了,哪来的高版本编译后文件?ConfigurationMetadataAnnotationProcessor 显然是 spring-boot-starter-parent 依赖引入的,3.02 换低版本 2.3.4即可

误删pom.xml,bug居然没了,大无语.....


错误7: Error resolving template [index]

[THYMELEAF][http-nio-8080-exec-5]

Exception processing template "index": Error resolving template [index], template might not exist or might not be accessible by any of the configured Template Resolvers

org.thymeleaf.exceptions.TemplateInputException: Error resolving template [index], template might not exist or might not be accessible by any of the configured Template Resolvers

原因:

Thymeleaf的声明放错了地方。。。,Thymeleaf 语法没报错,但页面解析不出来。

只要有一个页面使用了Thymeleaf,每个Html都要加Thymeleaf表头


8 java.io.IOException: Could not find resource mybatis-config.xml

mybatis总配置文件放错位置了,应该在resources下


9 org.apache.ibatis.binding.BindingException: Invalid bound statement (not found): com.atguigu.mapper.UserMapper.selectUser

总配置文件映射错位


<mappers>
<mapper resource="com.atguigu.mapper.UserMapper"/>
</mappers>

10 Error building SqlSession

### Error building SqlSession.
### The error may exist in com/atguigu/mapper/UserMapper.xml
### Cause: org.apache.ibatis.builder.BuilderException: Error parsing SQL Mapper Configuration. Cause: java.io.IOException: Could not find resource com/atguigu/mapper/UserMapper.xml

解决1:mybatis-config.xml 的 mapper resource 路径写错了,应该以 / 作为分割

把conf.xml文件下的<mapper>里的 resource="com.easy.mapping.userMapper.xml" 改为 resource="com/easy/mapping/userMapper.xml"

解决2:静态资源拦截,在pom添加

    <build>
<resources>
<resource>
<directory>src/main/resources</directory>
<includes>
<include>**/*.properties</include>
<include>**/*.xml</include>
</includes>
<filtering>true</filtering>
</resource>
<resource>
<directory>src/main/java</directory>
<includes>
<include>**/*.properties</include>
<include>**/*.xml</include>
</includes>
<filtering>true</filtering>
</resource>
</resources>
</build>

  网上其他的解决方案:

class 路径下,接口和它的Mapper配置文件必须同名

接口和它的Mapper配置文件必须同一个包下

官方给出全限定名保证不出错

你可以多找找与路径相关的

在查询上面resultType="com.bing.pojo.User"这个有时候也需要全限定名


11 sql异常:You can't specify target table 'grade_tbl' for update in FROM clause

需求:删除重复条目(删除自动编号不同,其他信息相同的条目)

解决方法,给临时表起别名

# 错误
delete from grade_tbl where 自动编号 not in (select min(自动编号) from grade_tbl group by 学号,姓名,课程编号,课程名称,分数);
# 正确
delete from grade_tbl
where 自动编号
not in (select * from (select min(自动编号) from grade_tbl group by 学号, 姓名, 课程编号, 课程名称, 分数) as temp);

  

12 java.lang.NullPointerException 空指针异常

错误:在实现层,测试BookService,增删改查都是空指针异常。

解决:容器中没有BookService组件,BookService 字段上添加@Autowired

13、@Autowired的Service层报错

没有加入容器,service添加@service

SprintBoot2报错汇总的相关教程结束。

《SprintBoot2报错汇总.doc》

下载本文的Word格式文档,以方便收藏与打印。