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

服务器重启后XPage调用Java代码出现NoClassDefFoundError问题求助

解决方案与分析

1. 排查服务器端ExtLib Bundle状态

执行tell http osgi ss com.ibm.xsp.extlib后,重点关注com.ibm.xsp.extlib.core的状态:

  • 如果状态是INSTALLED或RESOLVED而非ACTIVE,说明该bundle未启动,这是触发NoClassDefFoundError的直接原因。
  • 同时核对bundle版本号,必须与你在Designer中引入的JAR版本完全一致(你的JAR为11.0.1,服务器端需对应匹配)。

若bundle未启动,手动执行命令启动:

tell http osgi start com.ibm.xsp.extlib.core

2. 修正Designer中的依赖引入方式

手动引入ExtLib JAR的方式错误,Domino ExtLib是OSGi bundle,运行时由服务器的OSGi类加载器管理,手动添加外部JAR会导致编译时能找到类,但运行时类加载器隔离无法加载:

  • 正确操作:右键项目 → Build Path → Add Libraries → Domino Extensions Library → 选择与服务器版本匹配的ExtLib容器。
  • 移除之前手动添加的com.ibm.xsp.extlib.core_*.jar,避免类冲突。

3. 异常原因分析

可能的触发因素包括:

  • 服务器重启后,ExtLib bundle未配置为自动启动,需手动启动或修改OSGi启动配置。
  • 服务器近期进行了版本更新、配置变更,导致ExtLib bundle的依赖关系被破坏,无法自动解析启动。
  • 项目重新部署时,引入了其他冲突的JAR包,干扰了OSGi类加载器对ExtLib类的查找。

4. 无依赖替代方案

如果暂时无法修复ExtLib依赖,可以改用原生XSP API获取sessionScope,无需依赖ExtLib:

import javax.faces.context.FacesContext;
import java.util.Map;

// 获取sessionScope
Map<String, Object> sessionScope = FacesContext.getCurrentInstance().getExternalContext().getSessionMap();

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.17 06:35:36