Sailpoint Identity IIQ与Salesforce账户聚合报错求助
目标是通过Sailpoint直连连接器实现Sailpoint Identity IIQ与Salesforce实例的集成,已完成本地环境部署:
- IGA:Sailpoint Identity IIQ 8.3版本
- 数据库:MySQL 8.0.35.0版本
- 服务器:Apache Tomcat 9.0.83版本
- Java环境:JDK 21(Windows X64版本)
已通过基础认证建立Sailpoint与Salesforce的连接,但执行账户聚合时触发如下错误:
ERROR QuartzScheduler_Worker-2 sailpoint.api.Aggregator:1916 - Exception during aggregation of Object Type account on Application SalesforceTest. Reason: Unable to create iterator java.lang.IllegalAccessError: class connector.common.XmlUtil (in unnamed module @0x428aa84) cannot access class com.sun.org.apache.xerces.internal.jaxp.DocumentBuilderFactoryImpl (in module java.xml) because module java.xml does not export com.sun.org.apache.xerces.internal.jaxp to unnamed module @0x428aa84
需要分析错误原因并提供解决办法,完成账户聚合。
该错误由Java模块系统(JPMS)的封装机制导致:
- JDK 9及以上启用了模块系统,
java.xml模块默认不会将内部私有包com.sun.org.apache.xerces.internal.jaxp暴露给未命名模块(即传统非模块化JAR) - Sailpoint的连接器组件
connector.common.XmlUtil属于未命名模块,尝试直接调用JDK内部的Xerces实现类,触发了JPMS的权限限制
方案1:配置Tomcat JVM参数开放模块权限
在Tomcat的bin目录下创建或编辑setenv.bat(Windows环境),添加以下JVM参数:
set CATALINA_OPTS=%CATALINA_OPTS% --add-exports java.xml/com.sun.org.apache.xerces.internal.jaxp=ALL-UNNAMED
保存后重启Tomcat,重新执行账户聚合任务。
方案2:降级Java版本至JDK 8
Sailpoint Identity IIQ 8.3官方兼容JDK 8,JDK 21属于较新版本,存在未适配的兼容性问题:
- 卸载当前JDK 21,安装JDK 8(Oracle JDK 8或OpenJDK 8均可)
- 修改Tomcat的环境变量,将
JAVA_HOME指向JDK 8的安装路径 - 重启Tomcat后重新测试账户聚合
方案3:更新Salesforce连接器至适配版本
旧版本的Salesforce直连连接器可能未适配JDK 9+的模块系统:
- 下载适配IIQ 8.3的最新Salesforce连接器
- 替换IIQ部署目录中的旧连接器JAR包
- 重启IIQ应用后执行聚合测试
内容的提问来源于stack exchange,提问作者CyberS3P

