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

Maven依赖org.apache.http.client类部署时出现ClassNotFoundException问题

问题根源

该异常由JBoss的模块类加载优先级机制导致:JBoss服务器默认内置了org.apache.httpcomponents相关模块,类加载时会优先加载服务器自带的版本,忽略你应用包内打包的httpclient依赖,即便你本地打包已经包含对应类,部署后也会出现类找不到的问题。

解决方案


1. 配置JBoss部署文件排除服务器自带模块

在你的adobe-livecycle-jboss.ear包的META-INF目录下新建jboss-deployment-structure.xml文件,配置内容如下:

<?xml version="1.0" encoding="UTF-8"?>
<jboss-deployment-structure>
    <deployment>
        <!-- 排除JBoss自带的http相关模块 -->
        <exclusions>
            <module name="org.apache.httpcomponents" />
            <module name="org.apache.httpcore" />
        </exclusions>
    </deployment>
    <!-- 如果EAR内包含web、ejb等子部署包,需要同步给子包添加排除配置 -->
    <sub-deployment name="你的业务子模块名.war">
        <exclusions>
            <module name="org.apache.httpcomponents" />
            <module name="org.apache.httpcore" />
        </exclusions>
    </sub-deployment>
</jboss-deployment-structure>

把配置中的你的业务子模块名.war替换为你实际EAR包内的子包名称,没有子模块可以去掉sub-deployment部分。

2. 校验EAR打包结构

确认构建完成的EAR包中,lib目录下确实存在httpcore-4.4.3.jar和httpclient-4.5.1.jar两个文件。如果使用maven-ear-plugin打包,检查插件配置是否将依赖打入lib目录,参考配置:

<plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-ear-plugin</artifactId>
    <version>3.3.0</version>
    <configuration>
        <defaultLibBundleDir>lib</defaultLibBundleDir>
    </configuration>
</plugin>

3. 排查依赖冲突

本地执行mvn dependency:tree命令,检查项目是否有其他依赖传递引入了不同版本的httpclient、httpcore包,如果存在多版本冲突,使用<dependencyManagement>标签统一锁定版本为4.4.3和4.5.1即可。

4. 检查JBoss全局模块配置

登录JBoss服务器,检查standalone/configuration/standalone.xml(单机模式)或者domain/configuration/domain.xml(域模式)中的<global-modules>配置,确认没有把org.apache.httpcomponents配置为全局加载模块,如果存在该配置则删除后重启服务器。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.01 15:09:03