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

Jakarta EE 9开发JAX-RS客户端遭遇NoClassDefFoundError问题求助

解决JAX-RS客户端运行时NoClassDefFoundError: jakarta/ws/rs/client/ClientBuilder问题

错误根源

这个运行时错误的核心原因是独立运行的客户端无法获取JAX-RS API类:

  • 你的jakarta.ws.rs-api依赖设置了<scope>provided</scope>,该scope表示依赖由应用服务器(GlassFish)在容器内运行时提供,但客户端是通过main方法独立启动的,不在GlassFish容器环境中,因此运行时类路径中缺失ClientBuilder所在的API包。
  • pom.xml中存在拼写错误:jakata.servlet的groupId应为jakarta.servlet,虽不直接引发当前错误,但会导致后续Servlet相关依赖异常,需一并修复。

修正后的依赖配置

调整jakarta.ws.rs-api的scope并修复拼写错误后的pom.xml依赖片段:

<dependencies>
    <dependency>
        <groupId>jakarta.xml.bind</groupId>
        <artifactId>jakarta.xml.bind-api</artifactId>
        <version>3.0.1</version>
    </dependency>
    <dependency>
        <groupId>jakarta.enterprise</groupId>
        <artifactId>jakarta.enterprise.cdi-api</artifactId>
        <version>3.0.0</version>
        <scope>provided</scope>
    </dependency>
    <!-- 移除provided scope,确保运行时类路径包含该API -->
    <dependency>
        <groupId>jakarta.ws.rs</groupId>
        <artifactId>jakarta.ws.rs-api</artifactId>
        <version>3.0.0</version>
    </dependency>
    <!-- 修复groupId拼写错误 -->
    <dependency>
        <groupId>jakarta.servlet</groupId>
        <artifactId>jakarta.servlet-api</artifactId>
        <version>5.0.0</version>
        <scope>provided</scope>
    </dependency>
    <dependency>
        <groupId>org.junit.jupiter</groupId>
        <artifactId>junit-jupiter-api</artifactId>
        <version>${junit.version}</version>
        <scope>test</scope>
    </dependency>
    <dependency>
        <groupId>org.junit.jupiter</groupId>
        <artifactId>junit-jupiter-engine</artifactId>
        <version>${junit.version}</version>
        <scope>test</scope>
    </dependency>

    <dependency>
        <groupId>org.glassfish.jersey.core</groupId>
        <artifactId>jersey-client</artifactId>
        <version>3.1.0</version>
    </dependency>
</dependencies>

补充说明

  • 独立运行的JAX-RS客户端需要JAX-RS API和客户端实现(jersey-client)同时存在于运行时类路径中,因此不能将API依赖设置为provided。
  • 若后续需将客户端代码部署到GlassFish容器内,可再将jakarta.ws.rs-api改回provided scope,避免容器内依赖冲突。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.11 18:20:46