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

WebSphere服务器无法获取Mojarra的CDI 1.1工具类报错如何解决?

[10/20/21 15:20:38:248 GMT] 0000006e view E Unable to obtain CDI 1.1 utilities for Mojarra
[10/20/21 15:20:38:254 GMT] 0000006e flow E Unable to obtain CDI 1.1 utilities for Mojarra
Caused by: java.lang.ClassNotFoundException: org.slf4j.Logger
at java.net.URLClassLoader.findClass(URLClassLoader.java:610)
at com.ibm.ws.bootstrap.ExtClassLoader.findClass(ExtClassLoader.java:244)
at com.ibm.ws.bootstrap.ExtClassLoader.loadClass(ExtClassLoader.java:129)
at java.lang.ClassLoader.loadClass(ClassLoader.java:872)
at com.ibm.ws.classloader.ProtectionClassLoader.loadClass(ProtectionClassLoader.java:62)
at com.ibm.ws.classloader.ProtectionClassLoader.loadClass(ProtectionClassLoader.java:58)
at com.ibm.ws.classloader.CompoundClassLoader.loadClass(CompoundClassLoader.java:607)
at java.lang.ClassLoader.loadClass(ClassLoader.java:872)

报错根因

该报错的表层提示为Mojarra无法获取CDI 1.1工具类,实际根因为类加载路径中缺失slf4j日志组件的API包,Mojarra的CDI工具类初始化过程中依赖org.slf4j.Logger类,加载失败后触发上层异常。常见触发场景如下:

  • 应用未打包slf4j-api依赖,或打包的版本与当前使用的Mojarra版本不兼容
  • WebSphere类加载器配置为父类优先模式,应用自带的slf4j包被服务器父类加载器拦截,无法被应用加载
  • 服务器全局或共享库中存在版本冲突的slf4j相关包,导致类加载冲突
排查步骤
  • 解压应用war包,检查WEB-INF/lib目录下是否存在slf4j-api.jar,若存在确认其版本是否与Mojarra版本兼容
  • 登录WebSphere管理控制台,进入目标应用的类装入和更新检测配置页,确认类装入器的加载顺序
  • 检查服务器配置的共享库,是否存在绑定到当前应用的slf4j相关依赖,核对版本是否匹配
修复方案
  • 依赖缺失场景:在项目构建配置中引入兼容版本的slf4j-api依赖,打包时放入应用的WEB-INF/lib目录,Maven项目配置示例如下:
<dependency>
    <groupId>org.slf4j</groupId>
    <artifactId>slf4j-api</artifactId>
    <version>1.7.36</version>
</dependency>
  • 类加载顺序冲突场景:将应用的类装入器顺序修改为父类最后,优先加载应用自身携带的依赖包,避免与服务器自带的日志组件产生冲突
  • 多应用共用依赖场景:将兼容版本的slf4j-api及对应的日志绑定包配置为WebSphere共享库,绑定到目标应用或服务器级类加载器即可

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.29 03:24:03