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

执行Jetty Maven插件时缺失RxInvokerProvider类,求排查思路

排查思路与解决方案建议

嘿,咱们一步步来拆解这个问题——既然手动加依赖反而引发新错误,说明根源绝对不是单纯的依赖缺失,而是版本不兼容或者依赖冲突。下面是具体的排查方向:

1. 先锁定版本兼容性核心矛盾

你用的Jetty插件是9.2.3版本,这个版本对应的JAX-RS支持是JAX-RS 2.0,但javax.ws.rs.client.RxInvokerProvider是JAX-RS 2.1才新增的类!这大概率是问题的核心:

  • 你的项目里可能引入了JAX-RS 2.1+版本的依赖,但Jetty 9.2.x插件内置的JAX-RS环境还是2.0,导致类找不到。
  • 赶紧去pom里查javax.ws.rs:javax.ws.rs-api这类核心依赖的版本,如果是2.1+,要么降级到2.0.x系列,要么把Jetty插件升级到支持JAX-RS 2.1的版本(比如Jetty 9.4.x及以上)。

2. 用Maven依赖树揪出隐藏冲突

运行这个命令,把所有和JAX-RS相关的依赖树打出来,看看哪个依赖偷偷引入了不兼容的版本:

mvn dependency:tree -Dverbose -Dincludes=javax.ws.rs

重点关注两点:

  • 是否有多个版本的javax.ws.rs-api被不同依赖带进来
  • Jetty插件自身依赖的JAX-RS版本是什么,和你项目里的依赖是否存在版本冲突

3. 检查Jetty插件的配置是否加错了依赖

有时候你可能在jetty-maven-plugin的<dependencies>块里手动加了JAX-RS相关的库,或者插件配置里有额外引入的依赖,这些都可能导致版本冲突。去pom里找Jetty插件的配置段,看看有没有这类手动添加的依赖,先移除试试,或者调整到和Jetty版本匹配的版本。

4. 确认JAX-RS实现与Jetty的适配性

如果你用了特定的JAX-RS实现(比如Jersey、RESTEasy),得确保它和Jetty版本能搭得上:

  • 比如Jersey 2.26+才支持Jetty 9.4.x,而Jersey 2.20左右适配Jetty 9.2.x
  • 要是同时混了Jersey和RESTEasy的依赖,类加载冲突几乎是必然的,得清理掉多余的实现依赖

5. 排查Jetty的类加载顺序问题

Jetty插件运行时的类加载机制可能会优先加载错误版本的类。你可以试试在Jetty插件配置里加个类加载规则,强制指定用正确的JAX-RS版本:

<plugin>
    <groupId>org.eclipse.jetty</groupId>
    <artifactId>jetty-maven-plugin</artifactId>
    <version>9.2.3.v20140905</version>
    <configuration>
        <webApp>
            <overrideDescriptor>src/main/resources/jetty-web.xml</overrideDescriptor>
        </webApp>
    </configuration>
</plugin>

然后在jetty-web.xml里配置类加载优先级,把冲突的依赖排除掉。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.20 11:20:31