java.lang.IllegalStateException : Unable to read meta-data for class while implementing open api with spring boot

标签 java spring spring-boot openapi springdoc

我正在尝试在 Spring Boot 中使用 Spring 实现Open API DocOpen API UI:

我引用以下指南来执行此操作: https://www.baeldung.com/spring-rest-openapi-documentation

maven中的依赖如下:

        <!-- https://mvnrepository.com/artifact/org.springdoc/springdoc-openapi-core -->
        <dependency>
            <groupId>org.springdoc</groupId>
            <artifactId>springdoc-openapi-core</artifactId>
            <version>1.1.49</version>
        </dependency>
        <!-- https://mvnrepository.com/artifact/org.springdoc/springdoc-openapi-ui -->
        <dependency>
            <groupId>org.springdoc</groupId>
            <artifactId>springdoc-openapi-ui</artifactId>
            <version>1.2.20</version>
        </dependency>

我使用的Spring Boot版本是2.2

通过 ./mvnw spring-boot:run 运行应用程序时遇到以下与元数据相关的错误

java.lang.IllegalStateException: Unable to read meta-data for class org.springdoc.core.MultipleOpenApiSupportConfiguration
        at org.springframework.boot.autoconfigure.AutoConfigurationSorter$AutoConfigurationClass.getAnnotationMetadata(AutoConfigurationSorter.java:233) ~[spring-boot-autoconfigure-2.2.2.RELEASE.jar:2.2.2.RELEASE]
        at org.springframework.boot.autoconfigure.AutoConfigurationSorter$AutoConfigurationClass.getOrder(AutoConfigurationSorter.java:204) ~[spring-boot-autoconfigure-2.2.2.RELEASE.jar:2.2.2.RELEASE]
        at org.springframework.boot.autoconfigure.AutoConfigurationSorter$AutoConfigurationClass.access$000(AutoConfigurationSorter.java:150) ~[spring-boot-autoconfigure-2.2.2.RELEASE.jar:2.2.2.RELEASE]
        at org.springframework.boot.autoconfigure.AutoConfigurationSorter.lambda$getInPriorityOrder$0(AutoConfigurationSorter.java:63) ~[spring-boot-autoconfigure-2.2.2.RELEASE.jar:2.2.2.RELEASE]
        at java.base/java.util.TimSort.countRunAndMakeAscending(TimSort.java:360) ~[na:na]
        at java.base/java.util.TimSort.sort(TimSort.java:234) ~[na:na]
        at java.base/java.util.Arrays.sort(Arrays.java:1516) ~[na:na]

知道为什么会发生这种情况吗?

最佳答案

springdoc-openapi-uispringdoc-openapi-core 作为传递依赖项。最安全的做法是仅定义最深的依赖项,并让它提取其上游库的正确版本,如下所示:

<dependency>
    <groupId>org.springdoc</groupId>
    <artifactId>springdoc-openapi-ui</artifactId>
    <version>${springdoc-openapi-ui.version}</version>
</dependency>

换句话说,从 POM 依赖项中删除 springdoc-openapi-core,只指定上述内容(替换 ${springdoc-openapi-ui.version}当然是您想要的版本)。

关于java.lang.IllegalStateException : Unable to read meta-data for class while implementing open api with spring boot,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59469357/

相关文章:

java - 获取从现在到 DateMidnight 类(class)之间的剩余天数

java - 带有 hibernate 4.1 注释配置的 Spring 3.1.1

java - 出现错误 "type=Method Not Allowed, status=405"

java repaint 在循环内部不起作用,而循环在循环结束时起作用

java - 添加到 eclipse 项目的外部 jar

java - 有没有办法从 Java 改进 Scala 中的 for 循环实现

java - Spring Boot应用程序在没有路径的情况下将调用哪个方法

java - 从导入的依赖项 Autowiring 对象

java - 如何解决 Heroku '[heroku-exec] ERROR: Could not connect to proxy! Waiting 20 seconds before retry...' 中的问题?

java - Spring Boot 中使用 Jpa 动态表名