【问题标题】:Dropwizard-swagger with Dropwizard 1.3Dropwizard-swagger 与 Dropwizard 1.3
【发布时间】:2018-04-11 18:58:25
【问题描述】:

我正在使用 Dropwizard 1.3 的 dropwizard-swagger 依赖项,如下所示

<dependency>
            <groupId>com.smoketurner</groupId>
            <artifactId>dropwizard-swagger</artifactId>
            <version>1.3.0-1</version>
        </dependency>

从文档看来,这是唯一兼容的版本。但是我遇到了一个问题

ClassNotFoundException: org.zeroturnaround.javarebel.ClassEventListener

从一些研究来看,这似乎来自 glassfish 依赖项,我似乎没有找到任何带来这种依赖项的东西。我错过了什么?

【问题讨论】:

  • 请在 POM 中分享完整的依赖项列表。

标签: glassfish swagger dropwizard


【解决方案1】:

在深入研究了dropwizard-swagger的源代码后,我发现在高于1.1.0-1的版本中他们引入了BeanConfig。 BeanConfig 扫描所有类(不仅是您设置为资源包的类)并尝试为它们创建类对象。

“问题”是生成的阴影 jar 中有很多类正在使用您(或至少我的)dropwizard 应用程序未提供/使用的类的导入语句。

简单的解决方案:回滚到 dropwizard-swagger 版本 1.1.0-1 缺点:您只能使用旧的 swagger 版本

硬解:找出哪些依赖项正在拉入正在使用导入到在 dropwisard 应用程序启动期间失败的类的类

注意! 我正在使用 dropwizard-bom 并且我没有任何奇怪的依赖项

【讨论】:

    【解决方案2】:

    对我来说,不包括org.reflections 解决了这个问题...

    <dependency>
            <groupId>com.smoketurner</groupId>
            <artifactId>dropwizard-swagger</artifactId>
            <version>1.3.5-3</version>
            <exclusions>
                <exclusion>
                    <groupId>org.reflections</groupId>
                    <artifactId>reflections</artifactId>
                </exclusion>
            </exclusions>
        </dependency>
    

    【讨论】:

      【解决方案3】:

      我使用 swagger 来记录文档,这对我有用..

                  <groupId>com.smoketurner</groupId>
                  <artifactId>dropwizard-swagger</artifactId>
                  <version>1.3.12-1</version>
                  <exclusions>
                      <exclusion>
                          <groupId>org.glassfish.hk2.external</groupId>
                          <artifactId>javax.inject</artifactId>
                      </exclusion>
                  </exclusions>
              </dependency>```
      

      【讨论】:

        【解决方案4】:

        我建议查看swagger-core 项目。我最初计划在我的项目中使用 dropwizard-swagger,然后发现 swagger-core 支持更新版本的 OpenAPI 并集成到我的 dropwizard 项目中而没有依赖问题。

        【讨论】: