我升级到Sping Boot 3.0.7,并试图让我的Open API(swagger)再次工作,这些依赖项(每个springdoc):
<dependency>
<groupId>org.springdoc</groupId>
<artifactId>springdoc-openapi-ui</artifactId>
<version>1.7.0</version>
</dependency>
<dependency>
<groupId>org.springdoc</groupId>
<artifactId>springdoc-openapi-starter-webmvc-ui</artifactId>
<version>2.1.0</version>
</dependency>
...但是当我构建应用程序时,我得到以下错误:
java.lang.IllegalStateException: Failed to introspect Class [org.springdoc.webmvc.api.OpenApiWebMvcResource] from ClassLoader [jdk.internal.loader.ClassLoaders$AppClassLoader@1de0aca6]
...“造成原因”为:
java.lang.NoClassDefFoundError: javax/servlet/http/HttpServletRequest
当我查看org.springdoc:springdoc-openapi-webmvc-core:1.7.0
jar中的OpenApiWebMvcResource
时,它确实从javax
而不是jakarta
导入:
package org.springdoc.webmvc.api;
import com.fasterxml.jackson.core.JsonProcessingException;
import io.swagger.v3.oas.annotations.Operation;
import java.util.Locale;
import java.util.Optional;
import javax.servlet.http.HttpServletRequest;
...
那么这是openapi-webmvc-core
的问题,还是我的接线出错了?
2条答案
按热度按时间yks3o0rb1#
升级后也有同样的问题。
您只需要添加一个依赖项,即springdoc-openapi-starter-webmvc-api,并且无需额外配置。移除依赖项springdoc-openapi-ui
你不需要指定packagesToscan[]或者不需要使用withClassAnnotation(RestController.class)),它会自己寻找@RestController Annotation并生成文档。
https://springdoc.org/v2/#spring-webmvc-support
7cjasjjr2#
根据Spring Doc /v2 guide,我只需要引入
springdoc-openapi-starter-webmvc-ui
依赖项,而不是springdoc-openapi-ui
。所以当我的pom.xml看起来像:......错误消失了,它起作用了。
请注意,无论出于何种原因,我还需要拉入这些依赖项,否则我会得到
java.lang.NoClassDefFoundError: jakarta/xml/bind/annotation/XmlRootElement
: