You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Dropwizard 1.3集成dropwizard-swagger出现ClassNotFoundException问题求助

解决Dropwizard 1.3 + dropwizard-swagger 1.3.0-1的ClassNotFoundException问题

我之前也碰到过一模一样的问题,根源确实是dropwizard-swagger依赖的glassfish相关组件间接引入了可选的ZeroTurnaround JRebel依赖,但你的运行环境里并没有部署这个热部署工具库,所以才抛出了ClassNotFoundException: org.zeroturnaround.javarebel.ClassEventListener。

直接的解决方法是在Maven依赖中排除掉这个不必要的传递依赖:

<dependency>
    <groupId>com.smoketurner</groupId>
    <artifactId>dropwizard-swagger</artifactId>
    <version>1.3.0-1</version>
    <exclusions>
        <!-- 排除导致ClassNotFound的JRebel依赖 -->
        <exclusion>
            <groupId>org.zeroturnaround</groupId>
            <artifactId>javarebel</artifactId>
        </exclusion>
    </exclusions>
</dependency>

问题原因拆解

dropwizard-swagger依赖的glassfish部分模块(比如javax.servlet相关包)将JRebel标记为可选依赖,但Maven默认会下载可选依赖(除非你配置了特殊的依赖处理策略)。而JRebel是用于Java应用热重载的工具,大部分开发或生产环境中都不会引入这个库,自然就会出现类找不到的异常。

额外排查小技巧

如果你不确定是哪个依赖路径引入了JRebel,可以运行Maven的依赖树命令精准定位:

mvn dependency:tree -Dincludes=org.zeroturnaround:javarebel

这个命令会输出所有引入该依赖的链路,确保你排除的位置是准确的。

内容的提问来源于stack exchange,提问作者user_mda

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.22 09:45:46