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

WildFly环境REST客户端报ClassNotFoundException问题及解决疑问

为什么仅添加resteasy-client依赖就能解决ClassNotFoundException问题?

我在开发REST服务并尝试获取JSON数据时,使用WildFly服务器,运行客户端出现如下错误:

Caused by: java.lang.ClassNotFoundException: jakarta.ws.rs.client.ClientBuilder

最初的Maven POM依赖配置如下:

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>

    <groupId>com.metehan</groupId>
    <artifactId>restsetup</artifactId>
    <version>1.0-SNAPSHOT</version>
    <name>restsetup</name>
    <packaging>war</packaging>

    <properties>
        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
        <maven.compiler.target>1.8</maven.compiler.target>
        <maven.compiler.source>1.8</maven.compiler.source>
    </properties>

    <dependencies>
    <dependency>
        <groupId>jakarta.enterprise</groupId>
        <artifactId>jakarta.enterprise.cdi-api</artifactId>
        <version>3.0.0</version>
        <scope>provided</scope>
    </dependency>
    <dependency>
        <groupId>jakarta.ws.rs</groupId>
        <artifactId>jakarta.ws.rs-api</artifactId>
        <version>3.0.0</version>
        <scope>provided</scope>
    </dependency>
    <dependency>
        <groupId>jakarta.servlet</groupId>
        <artifactId>jakarta.servlet-api</artifactId>
        <version>5.0.0</version>
        <scope>provided</scope>
    </dependency>
    <dependency>
        <groupId>jakarta.json</groupId>
        <artifactId>jakarta.json-api</artifactId>
        <version>2.1.1</version>
    </dependency>

    <dependency>
        <groupId>org.projectlombok</groupId>
        <artifactId>lombok</artifactId>
        <version>1.18.24</version>
        <scope>provided</scope>
    </dependency>

    </dependencies>

    <build>
        <plugins>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-war-plugin</artifactId>
                <version>3.3.2</version>
            </plugin>
        </plugins>
    </build>
</project> 

之后我移除所有依赖,仅添加以下依赖便解决了问题:

<dependency>             
    <groupId>org.jboss.resteasy</groupId>             
    <artifactId>resteasy-client</artifactId>
    <version>6.2.1.Final</version>         
</dependency>

我想知道resteasy-client依赖是否包含了其他所需的依赖?


回答:

是的,resteasy-client依赖确实会通过Maven的传递依赖机制,自动引入客户端运行所需的所有必要组件:

  1. Jakarta REST API的实现类:你原POM里的jakarta.ws.rs-api只是API接口定义,没有具体实现,且scope=provided意味着依赖由WildFly容器提供。但如果客户端是独立运行(而非部署在WildFly内),容器不会提供实现类,导致找不到ClientBuilder的具体实现。resteasy-client作为WildFly默认JAX-RS实现(RESTEasy)的客户端模块,包含了jakarta.ws.rs-api的完整实现。

  2. RESTEasy核心组件:包含客户端请求处理、响应解析的核心类,支撑REST客户端的基础功能。

  3. JSON处理相关依赖:RESTEasy默认会引入JSON处理的实现组件,满足你获取JSON数据的需求,无需额外添加jakarta.json-api的实现包。

  4. 其他配套依赖:比如HTTP客户端适配、异常处理等支撑模块,确保客户端可以独立运行。

简单来说,resteasy-client是一个聚合性的依赖,它把REST客户端运行所需的API实现、核心组件、配套工具都通过传递依赖整合在一起,所以单独添加它就能解决你的ClassNotFoundException问题。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.16 19:25:22