spring - 带有 Java9 的 Swagger UI(spring boot 2.0)

标签 spring spring-boot swagger-ui java-9 swagger-2.0

我正在尝试让 swagger UI 与我的服务一起工作。我使用的是 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?那我能否让它以某种方式工作?

最佳答案

是的,这与 java 9 不兼容。

我认为你有三个选择:

  • 向 xml api 添加显式依赖,如 compile('javax.xml.bind:jaxb-api:2.3.0')
  • 将 springfox 版本更新为 2.9.0
  • --add-modules java.xml.bind 添加到 jvm 启动参数(自 this module will be removed in the later versions of java 以来,与其他选项相比,这更只是一种解决方法而不是修复)<

进一步阅读 Spring Boot 和 Java 9:https://github.com/spring-projects/spring-boot/wiki/Spring-Boot-with-Java-9-and-above

关于spring - 带有 Java9 的 Swagger UI(spring boot 2.0),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50210448/

相关文章:

java - 如何使用 Spring Security 通过基本身份验证来保护 swagger-ui

Java - 安全性已开启,但我仍然可以发送我想要的任何请求

java - 运行 Grails 项目时出错

java - Spring Boot Property Yml/Properties with List 结构

spring - Maven Elasticsearch 保持显示较低版本

java - @Tag 中的 springfox-swagger2 描述不被尊重

java - 如何配置 tomcat 为单个应用程序中的不同端点使用不同的端口?

java - RESTAssured 收到两个可能的状态代码之一

spring-boot - ElasticsearchRepository是否具有获取id最大值的方法?如果没有,如何编写查询以获取id的最大值

documentation - 如何在 Swagger UI 中为我的请求/响应提供示例数据?