一、Maven报错Could not find artifact com.mysql:mysql-connector-j:pom:unknown in aliyunmaven解决及分析
报错
创建springboot项目,勾选数据库驱动,springboot版本为3,现在改成了2.7.2,Maven就发生了报错Could not find artifact com.mysql:mysql-connector-j:pom:unknown in aliyunmaven
解决方法
(1)解决方法就是给mysql-connector-j指定版本
<dependency>
<groupId>com.mysql</groupId>
<artifactId>mysql-connector-j</artifactId>
<version>8.0.33</version>
<scope>runtime</scope>
</dependency>
注意:因为这里使用的是8.0+版本的mysql驱动,所以在application.yaml中配置driver时要加cj
spring:
datasource:
driver-class-name: com.mysql.cj.jdbc.Driver
使用6.0以上的mysql驱动,jdbc.driver为com.mysql.cj.jdbc.Driver。
如果springboot的版本为3时则不会报这个错误。因为springboot3.0+的版本有对mysql驱动进行版本控制,所以不需要手动指定版本。而低版本的springboot没有对mysql驱动进行版本控制,所以需要手动指定版本,否则报错。
(2)修改了之后,不要忘记了还要修改这两个依赖的版本,
<dependency>
<groupId>org.mybatis.spring.boot</groupId>
<artifactId>mybatis-spring-boot-starter</artifactId>
<version>2.2.2</version>
</dependency>
<dependency>
<groupId>com.baomidou</groupId>
<artifactId>mybatis-plus-boot-starter</artifactId>
<version>3.5.2</version>
</dependency>
二、报错Error creating bean with name 'requestMappingHandlerMapping' defined in class path resource [org/springframework/boot/autoconfigure/web/servlet/WebMvcAutoConfiguration$EnableWebMvcConfiguration.class]: Invocation of init method failed; nested exception is java.lang.IllegalStateException: Ambiguous mapping. Cannot map 'feedbackController' method
报错
原因
这个错误信息表明Spring Boot应用程序在启动时遇到了一些问题,特别是在创建requestMappingHandlerMapping
bean时发生了错误。错误的具体原因是feedbackController
类中的某个方法存在不明确的映射,导致Spring无法确定该如何处理请求映射。
解决方法
- 检查
Controller
中的映射注解: 确保Controller
类中的每个请求映射(@RequestMapping
,@GetMapping
,@PostMapping
等)都是唯一且明确的。避免多个方法使用相同的路径和HTTP方法组合。 -
确保没有重复的控制器映射: 检查项目中是否存在多个控制器类使用了相同的请求路径和方法。例如,如果有两个控制器类都映射到相同的路径,这将导致冲突。
-
检查父类或接口中的映射: 如果
feedbackController
继承了某个父类或实现了某个接口,检查这些父类或接口中是否存在重复的请求映射。 -
排查其他配置类: 检查是否有其他配置类或组件可能影响了请求映射。确保它们没有定义与
feedbackController
冲突的请求映射。 -
查看错误信息的完整堆栈: 错误信息中包含了具体的方法和类的详细信息,可以帮助更准确地定位问题。
-
使用Spring Boot的调试工具: 可以启用Spring Boot的调试模式,通过添加
spring.main.web-application-type=none
到application.properties
文件中,获得更详细的调试信息。
通过这些步骤,可以更准确地定位和解决Spring Boot应用程序中的请求映射冲突问题。如果有具体的代码片段或更多的错误堆栈信息,可以进一步提供来帮助更具体地解决问题。
通过检查之后,确实我的controller里有两个路径映射重复了,修改之后就不报这个错了。
三、knife4j报错Failed to introspect Class [com.github.xiaoymin.knife4j.spring.configuration
报错
Failed to introspect Class [com.github.xiaoymin.knife4j.spring.configuration
解决方法
(1)确认依赖项:确保 knife4j
的依赖已经正确添加到项目的构建配置中。
<!--swagger-->
<dependency>
<groupId>com.github.xiaoymin</groupId>
<artifactId>knife4j-openapi2-spring-boot-starter</artifactId>
<version>4.4.0</version>
</dependency>
下面是我的整个pom文件
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.7.2</version>
<relativePath/> <!-- lookup parent from repository -->
</parent>
<groupId>com.water</groupId>
<artifactId>demo</artifactId>
<version>0.0.1-SNAPSHOT</version>
<name>demo</name>
<description>demo</description>
<properties>
<java.version>1.8</java.version>
</properties>
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-jdbc</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>org.mybatis.spring.boot</groupId>
<artifactId>mybatis-spring-boot-starter</artifactId>
<version>2.2.2</version>
</dependency>
<dependency>
<groupId>com.baomidou</groupId>
<artifactId>mybatis-plus-boot-starter</artifactId>
<version>3.5.2</version>
</dependency>
<dependency>
<groupId>com.mysql</groupId>
<artifactId>mysql-connector-j</artifactId>
<version>8.0.33</version>
<scope>runtime</scope>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.mybatis.spring.boot</groupId>
<artifactId>mybatis-spring-boot-starter-test</artifactId>
<version>3.0.3</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<version>1.18.30</version>
</dependency>
<dependency>
<groupId>cn.hutool</groupId>
<artifactId>hutool-all</artifactId>
<version>5.8.11</version>
</dependency>
<!--添加热部署-->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-devtools</artifactId>
<scope>runtime</scope>
<optional>true</optional>
</dependency>
<!--swagger-->
<dependency>
<groupId>com.github.xiaoymin</groupId>
<artifactId>knife4j-openapi2-spring-boot-starter</artifactId>
<version>4.4.0</version>
</dependency>
<!--gson数据-->
<dependency>
<groupId>com.google.code.gson</groupId>
<artifactId>gson</artifactId>
<version>2.9.1</version>
</dependency>
</dependencies>
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
<!--热部署配置-->
<configuration>
<!--fork:如果没有该项配置,整个devtools不会起作用-->
<fork>true</fork>
<excludes>
<exclude>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
</exclude>
</excludes>
</configuration>
</plugin>
</plugins>
</build>
</project>