JHHK

欢迎来到我的个人网站
行者常至 为者常成

报错收集

目录

配置了Druid但无法启动

SpringBoot版本是3.2.5

    <parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>3.2.5</version>
        <relativePath/> <!-- lookup parent from repository -->
    </parent>

Druid版本是:

        <dependency>
            <groupId>com.alibaba</groupId>
            <artifactId>druid-spring-boot-starter</artifactId>
            <version>1.2.0</version>
        </dependency>

配置文件中配置了使用Druid

  datasource:
    druid:
      url: jdbc:mysql://localhost:3306/HelloSpring?serverTimezone=GMT%2B8&useUnicode=true&characterEncoding=utf-8
      username: root    # mysql 登录用户名
      password: 123456  # mysql 登录密码
      driver-class-name: com.mysql.cj.jdbc.Driver # MySQL驱动,Java连接MySQL必需

启动失败,并且报错找不到datasource.url。
查看启动时的相关日志,发现Druid并没有配置成功,而是使用的默认的Hikari。
失败原因: SpringBoot 3.2.5与druid-spring-boot-starter不兼容。
使用下面的版本解决问题。

        <dependency>
            <groupId>com.alibaba</groupId>
            <artifactId>druid-spring-boot-3-starter</artifactId>
            <version>1.2.28</version>
        </dependency>

本质还是:SpringBoot 3.2.5 与依赖库的版本兼容问题。

BeanNotOfRequiredTypeException

报错

BeanNotOfRequiredTypeException: ddlApplicationRunner
expected: Runner
actual: NullBean

原因:
MyBatis-Plus 代码生成器里的 ddlApplicationRunner Bean 返回了 null,Spring Boot 3 不允许 → 启动直接失败

解决:
移除了这个依赖

        <dependency>
            <groupId>com.baomidou</groupId>
            <artifactId>mybatis-plus-generator</artifactId>
            <version>3.5.3.1</version>
        </dependency>

移除后仍然报相同的错误。
然后又修改了mybatis-plus-boot-starter版本,从3.5.3.1修改为3.5.5

        <dependency>
            <groupId>com.baomidou</groupId>
            <artifactId>mybatis-plus-boot-starter</artifactId>
            <version>3.5.5</version>
        </dependency>

问题解决了。
本质还是:SpringBoot 3.2.5 与依赖库的版本兼容问题。

删除.idea目录后,运行配置文件没有了

这是 IntelliJ IDEA 的典型情况:
.idea 目录被删 = 项目运行配置 + 工程结构配置全没了,所以右上角 Run Configuration 消失、运行按钮变灰。

如果是 Spring Boot 项目: 找到启动类(带 main 方法) 右键点击:
Run ‘XXXApplication’
IDEA 会自动创建运行配置

mybatis-spring兼容问题

添加了mybatis-plus-boot-starter后,启动报错

<!--
 mybatis-plus-boot-starter内部依赖的mybatis-spring版本是2.12.2,它与spring boot 3.x有版本冲突
 所以在下面直接指定了mybatis-spring为3.0.3
-->
<dependency>
    <groupId>com.baomidou</groupId>
    <artifactId>mybatis-plus-boot-starter</artifactId>
    <version>3.5.16</version>
</dependency>
<!--
作用:Spring 不认识 MyBatis 的 Mapper!Spring 不知道 UserMapper 是什么东西,不会创建它,不会管理它,更不能注入给 Service。
解决方案:
mybatis-spring 就是中间翻译官 + 胶水
它告诉 Spring:
“这些 Mapper 接口是特殊的类,你要帮我创建、管理、注入!”
-->
<dependency>
    <groupId>org.mybatis</groupId>
    <artifactId>mybatis-spring</artifactId>
    <version>3.0.3</version>
</dependency>

本质还是:SpringBoot 3.2.5 与依赖库的版本兼容问题。

数据库找不到表报错

mysql内有一个数据库HelloSpring,下面有一个表叫user。

HelloSpring工程内的数据库DAO层使用的数据model是UserEntity

@Mapper
public interface UserMapper extends BaseMapper<UserEntity> {

}

报错:找不到user_entity表。

解决方案:指定表名

@Data
@TableName("user")  //指定数据库内的表名称,如果不写默认会找:UserEntity → 默认表名 user_entity
public class UserEntity implements Serializable {

    private static final long serialVersionUID = 1L;

    private Integer id;

    private String name;

    private Integer age;

    private String sex;

    private String address;

    private String describes;

    private String image;

}

mapper扫描范围过大导致的报错

一开始是这样写的,扫描范围过大

@MapperScan("com.lxy.hellospring")

导致userService实例被赋值成了其它类型,无法调用它的接口

@Autowired
private UserService userService;

通过下面的方式明确具体的扫描位置

@MapperScan("com.lxy.hellospring.module.user.mapper")

行者常至,为者常成!





R
Valine - A simple comment system based on Leancloud.