首页 > 解决方案 > Ant/Ivy 类加载器问题?Swagger UI 3 -> java.lang.ClassNotFoundException: io.swagger.models.Swagger

问题描述

我们目前正在将 Spring Boot 服务从 Maven 迁移到 Ant/Ivy(客户要求)

我们让 Swagger 代码生成部分正常工作,但目前我们发现自己陷入了 Swagger UI。

我添加了以下依赖项,它们也在 Maven pom 中:

    <dependency org="io.springfox" name="springfox-boot-starter" conf="compile->default"  rev="3.0.0" />
    <dependency org="io.springfox" name="springfox-spring-web" conf="compile->default"  rev="3.0.0" />

但是在运行 Spring Boot 应用程序时,我得到:

Failed to instantiate [springfox.documentation.spring.web.json.JsonSerializer]: Factory method 'jsonSerializer' threw exception; nested exception is java.lang.NoClassDefFoundError: io.swagger.models.Swagger

为了解决这个问题,我尝试明确添加:

<dependency org="io.swagger" name="swagger-models" conf="compile->default" rev="1.6.2" />

但后来我得到:

Failed to introspect Class [springfox.documentation.oas.mappers.ServiceModelToOpenApiMapperImpl] from ClassLoader [org.springframework.boot.loader.LaunchedURLClassLoader@e7b4c912]
[...]
Caused by: java.lang.ClassNotFoundException: io.swagger.v3.oas.models.OpenAPI

这个类可以在 v3 swagger-models 中找到,我尝试添加:

<dependency org="io.swagger.core.v3" name="swagger-models" conf="compile->default"  rev="2.1.2" />

但后来它再也找不到 io.swagger.models.Swagger ...

我已经考虑过这一点,看起来从 Ivy 向 ClassLoader 提供信息的任何东西都无法处理具有相同 artifactId 的两个依赖项。

有谁知道如何解决这个问题?

标签: spring-bootantclassloaderswagger-uiivy

解决方案


推荐阅读