IBM ODM XOM引用ILOG JRules Jar部署失败类找不到问题求助
IBM ODM 级联规则部署NoClassDefFoundError问题及疑问解答
基于IBM ODM 8.10.5.1实现级联规则执行逻辑时,本地Rule Designer通过XOM项目的.classpath引用ODM安装包的jrules-res-8.10.5.1-execution.jar和jrules-res-8.10.5.1-session-java.jar并设置为不导出,但部署到Decision Center后出现构建错误,提示无法加载ilog.rules.res.session.config.IlrSessionFactoryConfig等类。以下是针对疑问的解答:
1. jrules* Jar包是否需要放入XOM归档/单独部署?
- 这些Jar是ODM核心运行时组件,不需要放入XOM归档,也不需要单独部署——你已确认远程ODM实例存在相同Jar包,它们默认存放在Rule Execution Server(RES)的
WEB-INF/lib目录下,属于RES自带依赖。 - 问题根源:本地Rule Designer的
.classpath引用仅在开发环境生效,Decision Center服务器端构建规则集时,无法识别本地的ILOG_BR_HOME变量,也未配置这些依赖的查找路径,导致构建过程找不到对应类。
2. XOM链接外部/内部库的首选方式(无Ant脚本、用Decision Center同步/WEB导入场景)
按优先级排序:
- 方式一:Rule Designer配置XOM系统路径条目
这是ODM自带库的首选方式:在XOM项目属性的「ILOG Rule Designer」->「XOM Path」中,添加系统路径条目(对应.ruleproject文件中的SystemXOMPathEntry),指向本地的jrules-res-*.jar。注意:- 路径可用本地ODM安装绝对路径或本地环境变量(仅在Rule Designer生效);
- 无需设置
exported="true",服务器端已自带这些库; - 标记为系统库后,Decision Center构建时会识别这些类由ODM运行时提供,不会尝试从XOM归档加载。
- 方式二:Rule Execution Server控制台添加全局库
仅适用于自定义第三方库(非ODM自带):登录RES控制台,进入「管理」->「库」,上传并注册库,部署规则集时关联该库。ODM自带库无需此操作,RES已默认加载。 - 方式三:.classpath配置
仅适用于本地Rule Designer开发调试,Decision Center构建时不识别该配置,不能单独依赖。 - 方式四:Ant脚本
res-deploy-xom任务
适合自动化部署场景,当前无Ant脚本可暂不考虑。
3. 检查ODM实例中jrules Jar包的路径及可访问性
- Jar包路径:远程RES应用的
WEB-INF/lib目录是核心库默认存放位置,路径通常为:<ODM_INSTALL_DIR>/executionserver/applications/res/WEB-INF/lib,可登录服务器文件系统直接查看该目录下的jrules-res-*.jar。 - 可访问性检查:
- 登录RES控制台,进入「诊断」页面(路径:
http://<RES_HOST>:<PORT>/res/diagnostic),在「类加载器」模块搜索目标类(如ilog.rules.res.session.config.IlrSessionFactoryConfig),确认类是否能被加载; - 进入「管理」->「库」,此处显示的是自定义注册的库,ODM自带核心库不会在此列出(属于WEB-INF/lib默认加载项);
- 登录RES控制台,进入「诊断」页面(路径:
- 权限要求:需要拥有RES控制台的管理员角色(如
rtsAdmin),才能访问诊断页面和库管理功能。
额外修复步骤
针对当前部署错误,可按以下操作解决:
- 在Rule Designer中打开XOM项目属性,进入「ILOG Rule Designer」->「XOM Path」,删除原
.classpath中的变量引用,添加系统路径条目指向本地的jrules-res-*.jar; - 重新导出包含XOM和BOM的归档(确保不包含jrules的Jar);
- 在Decision Center中重新导入归档,再尝试部署规则集。
内容的提问来源于stack exchange,提问作者James C.
相关产品推荐
相关产品推荐

