Swagger UI с Java9 (весенняя загрузка 2.0) - PullRequest
0 голосов
/ 07 мая 2018

Я пытаюсь заставить свагерский интерфейс работать с моим сервисом. Я использую Spring Boot 2.0 и Java 9. Для swagger

добавлены следующие зависимости
compile('io.springfox:springfox-swagger2:2.8.0')
compile('io.springfox:springfox-swagger-ui:2.8.0')

Swagger настроен как следует

@Configuration
@EnableSwagger2
public class SwaggerConfig {
    @Bean
    public Docket api() {
        return new Docket(DocumentationType.SWAGGER_2)
                .select()
                .apis(RequestHandlerSelectors.any())
                .paths(PathSelectors.any())
                .build();
    }
}

Компилируется хорошо, но когда я запускаю приложение командой BootRun, происходит сбой из-за:

org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'xmlModelPlugin': Lookup method resolution failed; nested exception is java.lang.IllegalStateException: Failed to introspect Class [springfox.documentation.schema.XmlModelPlugin] from ClassLoader [jdk.internal.loader.ClassLoaders$AppClassLoader@4f8e5cde]

Caused by: java.lang.ClassNotFoundException: javax.xml.bind.annotation.XmlType
    at java.base/jdk.internal.loader.BuiltinClassLoader.loadClass(BuiltinClassLoader.java:582)
    at java.base/jdk.internal.loader.ClassLoaders$AppClassLoader.loadClass(ClassLoaders.java:185)
    at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:496)
    ... 25 common frames omitted

В чем может быть проблема? Не совместим с Java9? Тогда я могу заставить его работать как-то?

Ответы [ 3 ]

0 голосов
/ 18 августа 2018

версия 2.9.0 не может быть найдена в Maven Central. Доступны версии 2.9.1 и 2.9.2

https://mvnrepository.com/artifact/io.springfox/springfox-swagger2

Как предложено @eis после обновления с 2.8.0 до 2.9.2, исправлена ​​проблема для меня

0 голосов
/ 27 августа 2018

Я не уверен насчет этой очень конкретной ошибки, но в целом Swagger 2.9.x, похоже, имеет некоторую несовместимость с SpringBoot 2.0.x

Некоторые задокументированные проблемы: https://github.com/springfox/springfox/issues/1773 (основной) https://github.com/springfox/springfox/issues/2501

Существует версия 3.0.0-SNAPSHOT, которая может быть более стабильной в этой версии Spring Boot.

0 голосов
/ 07 мая 2018

Да, это несовместимость с Java 9.

Я думаю, у вас есть три варианта:

  • добавить явную зависимость к XML-API, например compile('javax.xml.bind:jaxb-api:2.3.0')
  • обновить версию Springfox до 2.9.0
  • добавьте --add-modules java.xml.bind к параметрам запуска jvm (это скорее обходной путь, а не исправление, по сравнению с другими опциями, поскольку этот модуль будет удален в более поздних версиях java )

Дополнительная информация о Spring Boot и java 9: ​​https://github.com/spring-projects/spring-boot/wiki/Spring-Boot-with-Java-9-and-above

...