通过堆栈跟踪可以发现是Maven: io.springfox:springfox-schema:3.0.0中的问题
以更改源代码并替换jar包的形式修复该问题
首先下载源代码
https://github.com/springfox/springfox.git
找到代码
springfox-schema/src/main/java/springfox/documentation/schema/TypeNameIndexingAdapter.java
行号: 50-60
问题代码:
private boolean checkTypeRegistration(
String typeName,
String typeId) {
if (knownNames.containsKey(typeId)) {
if (!knownNames.get(typeId).equals(typeName)) {
LOGGER.debug("Rewriting type {} with model id: {} is not allowed, because it is already registered",
typeName,
typeId);
throw new IllegalStateException("Model already registered with different name.");
} else {
return true;
}
}
return false;
}
尝试改为:
private boolean checkTypeRegistration(String typeName, String typeId) {
return this.knownNames.containsKey(typeId);
}
根目录gradle-install打包,类似maven-install
虽然会报错,但是springfox-schema-3.0.1-SNAPSHOT.jar还是生成了
放置到 resources/libs/springfox-schema-3.0.1-SNAPSHOT.jar
编辑pom.xml
添加或替换:
...
<dependency>
<groupId>io.springfox</groupId>
<artifactId>springfox-schema</artifactId>
<version>3.0.1-SNAPSHOT</version>
<scope>system</scope>
<systemPath>${basedir}/src/main/resources/libs/springfox-schema-3.0.1-SNAPSHOT.jar</systemPath>
</dependency>
...
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
<configuration>
<!-- maven打包时会将外部引入的jar包(比如在根目录下或resource文件下新加外部jar包)打包到项目jar -->
<includeSystemScope>true</includeSystemScope>
</configuration>
</plugin>
</plugins>
</build>
可以了