spring-boot - 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 的两个依赖项。
有谁知道如何解决这个问题?
解决方案
推荐阅读
- python - 如何检查字符串中的字符是否为数字?
- regex - 如何在具有相似txt文件的前5位数字的不同行中查找前5位数字并在ubuntu上打印整行
- mysql - 缺少 Nginx 和 MariaDB 上的 MySQL 扩展
- android - 将功能 SearchView 添加到一个特定的 Fragment
- python-3.x - 在模块导入期间调用的 python 模拟函数调用
- javascript - 使用 JSON 多标记在 Google 地图上进行标记聚类
- c++ - 从 C++ 列表中删除对象
- c++ - 是否可以借助 JSON 文件在 Qt 中创建 UI 表单
- c++ - 使用父指针和左子树和右子树高度从树中删除
- amazon-web-services - AWS Api Gateway 模拟集成响应标头映射,如何?