Springdoc-openapi-ui:1.6.7 и выше не отображает пользовательский интерфейс API

У меня есть этот весенний проект:

<parent>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-parent</artifactId>
    <version>2.7.5</version>
    <relativePath/>
</parent>

и эта зависимость:

    <dependency>
        <groupId>org.springdoc</groupId>
        <artifactId>springdoc-openapi-ui</artifactId>
        <version>1.6.6</version>
    </dependency>

Все работает, API UI отображается.

Однако, когда я обновляю springdoc-openapi-ui до версии 1.6.7 и выше, я получаю это исключение при посещении пользовательского интерфейса API:

HttpStatus: 500 INTERNAL_SERVER_ERROR: {}.
org.springframework.web.util.NestedServletException: handler dispatch failed; nested exception is java.lang.NoClassDefFoundError: io/swagger/v3/oas/annotations/media/PatternProperties

Это отображается при посещении страницы пользовательского интерфейса API:

Обновлять:

Вот соответствующий вывод mvn dependency:tree:

[INFO] |  +- org.springframework.kafka:spring-kafka:jar:2.8.10:compile
[INFO] |  |  +- org.springframework:spring-context:jar:5.3.23:compile
[INFO] |  |  +- org.springframework:spring-messaging:jar:5.3.23:compile
[INFO] |  |  +- org.springframework:spring-tx:jar:5.3.23:compile
[INFO] |  |  \- org.apache.kafka:kafka-clients:jar:3.1.2:compile
[INFO] |  |     +- com.github.luben:zstd-jni:jar:1.5.0-4:runtime
[INFO] |  |     +- org.lz4:lz4-java:jar:1.8.0:runtime
[INFO] |  |     \- org.xerial.snappy:snappy-java:jar:1.1.8.4:runtime
[INFO] |  \- io.confluent:kafka-avro-serializer:jar:7.2.1:compile
[INFO] |     +- org.apache.avro:avro:jar:1.11.0:compile
[INFO] |     +- io.confluent:kafka-schema-serializer:jar:7.2.1:compile
[INFO] |     +- io.confluent:kafka-schema-registry-client:jar:7.2.1:compile
[INFO] |     |  \- io.swagger.core.v3:swagger-annotations:jar:2.1.10:compile

Что изменилось и что нужно изменить?

Я пытаюсь найти и опубликовать заметки об изменении, но пока не нашел ничего, что могло бы мне помочь. github.com/springdoc/springdoc-openapi/releases/tag/v1.6.7

Michal Špondr 11.11.2022 09:53

Можете ли вы выполнить поиск в своих зависимостях IDE для swagger-annotations или сделать mvn dependency:tree | grep swagger-annotations Я пытаюсь увидеть, есть ли у вас какие-либо исключения или, возможно, как-то включены другие (более старые версии)...

JCompetence 11.11.2022 10:57

@JCompetence Я добавил в сообщение связанную зависимость mvn: дерево. Деревья кажутся одинаковыми при использовании как 1.6.6, так и последних версий 1.6.12.

Michal Špondr 11.11.2022 12:26

@JCompetence Я попытался переопределить зависимость, используя io.swagger.core.v3.swagger-annotations:2.2.6, и это заработало. Спасибо за подсказку!

Michal Špondr 11.11.2022 12:33
Документирование API с помощью Swagger на Springboot
Документирование API с помощью Swagger на Springboot
В предыдущей статье мы уже узнали, как создать Rest API с помощью Springboot и MySql .
Как включить TLS в gRPC-клиенте и сервере : 2
Как включить TLS в gRPC-клиенте и сервере : 2
Здравствуйте! 🙏🏻 Надеюсь, у вас все хорошо и добро пожаловать в мой блог.
Сортировка hashmap по значениям
Сортировка hashmap по значениям
На Leetcode я решал задачу с хэшмапой и подумал, что мне нужно отсортировать хэшмапу по значениям.
Принципы SOLID - лучшие практики
Принципы SOLID - лучшие практики
SOLID - это аббревиатура, обозначающая пять ключевых принципов проектирования: принцип единой ответственности, принцип "открыто-закрыто", принцип...
gRPC на Android с использованием TLS
gRPC на Android с использованием TLS
gRPC - это относительно новая концепция взаимодействия между клиентом и сервером, но не более.
0
4
293
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Проблема была вызвана более старой версией пакета io.swagger.core.v3:swagger-annotations:2.1.10, которая была добавлена ​​в проект транзитивной зависимостью (на данный момент последняя версия — 2.2.6).

Есть 2 возможных решения:

Принудительно используйте последнюю версию пакета swagger-annotations.

или

Исключите зависимость пакета swagger-annotations:

<dependency>
<groupId>io.confluent</groupId>
<artifactId>kafka-avro-serializer</artifactId>
<version>7.2.2</version>
<exclusions>
    <exclusion>
        <groupId>io.swagger.codegen.v3</groupId>
        <artifactId>swagger-annotations</artifactId>
    </exclusion>
</exclusions>
</dependency>

Затем swagger-annotations входит в проект как транзитивная зависимость пакета springdoc-openapi-ui.

Рад, что у тебя получилось. +1

JCompetence 11.11.2022 16:54

Другие вопросы по теме