Java8升级到11时JAX-B API未找到、WADL功能禁用警告如何解决
排查解决方案
Java 11 已经将JAXB、javax.activation等Java EE相关模块完全从默认JDK中移除,你当前遇到的告警是因为Jersey的WADL功能依赖的JAXB相关组件未完全加载,可按以下步骤排查:
1 补充缺失的依赖
当前你仅引入了jaxb-api和jaxb-runtime,还需要补充jaxb-core与javax.activation依赖,完整依赖配置如下:
<dependency> <groupId>javax.xml.bind</groupId> <artifactId>jaxb-api</artifactId> <version>2.3.1</version> </dependency> <dependency> <groupId>org.glassfish.jaxb</groupId> <artifactId>jaxb-runtime</artifactId> <version>2.3.3</version> <scope>runtime</scope> </dependency> <dependency> <groupId>org.glassfish.jaxb</groupId> <artifactId>jaxb-core</artifactId> <version>2.3.0.1</version> </dependency> <dependency> <groupId>com.sun.activation</groupId> <artifactId>javax.activation</artifactId> <version>1.2.0</version> </dependency>
2 排查版本兼容问题
- 确认你使用的Jersey版本不低于2.29,低于该版本的Jersey对Java 11的JAXB适配存在已知缺陷,会出现已引入依赖仍无法识别的问题,建议升级Jersey到2.29及以上版本
- 执行
mvn dependency:tree(Gradle项目执行gradle dependencies)排查项目中是否存在多个版本的JAXB相关依赖,如有冲突统一所有JAXB相关组件的版本即可
3 无需WADL功能可直接关闭告警
如果你的项目不需要使用WADL接口文档功能,可以直接关闭WADL特性彻底消除告警:
如果是通过ResourceConfig类配置Jersey,添加如下配置:
config.property("jersey.config.server.wadl.disableWadl", true);
如果是通过web.xml配置,添加如下参数:
<context-param> <param-name>jersey.config.server.wadl.disableWadl</param-name> <param-value>true</param-value> </context-param>
内容的提问来源于stack exchange,提问作者Vignesh T I
相关产品推荐
相关产品推荐

