JBoss下RestEasy Servlet集成Swagger出现依赖缺失与URI模板冲突问题
JBoss环境RestEasy集成Swagger报错解决方案
报错详情
SEVERE: Missing dependency for constructor public org.jboss.resteasy.plugins.providers.JaxrsServerFormUrlEncodedProvider(boolean) at parameter index 0
SEVERE: Missing dependency for constructor public org.jboss.resteasy.core.AsynchronousDispatcher(org.jboss.resteasy.spi.ResteasyProviderFactory) at parameter index 0
SEVERE: Conflicting URI templates. The URI template /api-docs for root resource class com.wordnik.swagger.jaxrs.listing.ApiListingResourceJSON and the URI template /api-docs transform to the same regular expression /api-docs(/.*)?
解决方案
1. 解决RestEasy构造器依赖缺失错误
- 确认所有
org.jboss.resteasy组下的依赖scope全部设置为provided,不要引入与JBoss内置RestEasy版本不一致的第三方RestEasy实现,避免类加载冲突 - 检查pom.xml中是否存在重复引入的resteasy-jaxrs、resteasy-providers相关依赖,移除多余的重复依赖声明
- 在WEB-INF目录下添加
jboss-deployment-structure.xml配置,显式排除JBoss全局自动加载的RestEasy模块,或指定依赖模块版本与项目保持一致,配置示例如下:
<jboss-deployment-structure> <deployment> <exclude-modules> <module name="org.jboss.resteasy.resteasy-jaxrs" /> <module name="org.jboss.resteasy.resteasy-jackson-provider" /> </exclude-modules> </deployment> </jboss-deployment-structure>
2. 解决/api-docs路径冲突错误
- 该错误由Swagger的ApiListingResource被重复注册导致,检查web.xml中是否同时配置了自动扫描JAX-RS资源和手动注册Swagger资源的配置,删除其中一处即可
- 如果web.xml中
resteasy.resources参数已经手动指定了com.wordnik.swagger.jaxrs.listing.ApiListingResourceJSON,需要关闭自动扫描:将resteasy.scan参数值设为false,避免重复扫描到同路径的资源类 - 若需要保留自动扫描配置,移除手动注册的Swagger资源类声明即可
3. 验证操作
- 清理项目编译缓存,重新打包后重启JBoss实例验证
- 若仍存在冲突,检查项目是否引入了多个版本的Swagger jaxrs依赖,统一Swagger依赖版本到与当前RestEasy版本兼容的匹配版本
内容的提问来源于stack exchange,提问作者Dr Dave
相关产品推荐
相关产品推荐

