У меня есть этот весенний проект:
<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
Что изменилось и что нужно изменить?
Можете ли вы выполнить поиск в своих зависимостях IDE для swagger-annotations
или сделать mvn dependency:tree | grep swagger-annotations
Я пытаюсь увидеть, есть ли у вас какие-либо исключения или, возможно, как-то включены другие (более старые версии)...
@JCompetence Я добавил в сообщение связанную зависимость mvn: дерево. Деревья кажутся одинаковыми при использовании как 1.6.6, так и последних версий 1.6.12.
@JCompetence Я попытался переопределить зависимость, используя io.swagger.core.v3.swagger-annotations:2.2.6, и это заработало. Спасибо за подсказку!
Проблема была вызвана более старой версией пакета 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
Я пытаюсь найти и опубликовать заметки об изменении, но пока не нашел ничего, что могло бы мне помочь. github.com/springdoc/springdoc-openapi/releases/tag/v1.6.7