如何使用Java 9的swagger UI(Springboot 2.0)?

内容来源于 Stack Overflow,并遵循CC BY-SA 3.0许可协议进行翻译与使用

  • 回答 (2)
  • 关注 (0)
  • 查看 (474)

我正试图使这个傲慢的UI与我的服务一起工作,使用的是Springboot 2.0和Java 9。为swagger添加了下列依赖项

compile('io.springfox:springfox-swagger2:2.8.0')
compile('io.springfox:springfox-swagger-ui:2.8.0')
@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
提问于
用户回答回答于

是的,这与java 9不兼容。

有三个选择:

  • 添加显式依赖到xml apis之类的 compile('javax.xml.bind:jaxb-api:2.3.0')
  • 将springfox版本更新为2.9.0
  • 添加--add-modules java.xml.bind到jvm启动参数
用户回答回答于

在Maven Central中找不到2.9.0版本,可用版本2.9.1 and 2.9.2

扫码关注云+社区

领取腾讯云代金券