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

GitLab CI中IBM ODM CLI含特定XOM JAR时构建报URI非层级化错误

问题分析与解决方案

核心问题

在GitLab CI Linux运行器环境中,使用IBM ODM 9.5.0 CLI编译器构建RuleApp时,出现以下矛盾场景:

  • 当build.properties中embedded-xom=true且xom-classpath包含testX-xom.jar时,执行命令java -jar rules-compiler.jar -config build.properties抛出java.lang.IllegalArgumentException: URI is not hierarchical
  • 移除testX-xom.jar则触发GBREX0001E错误,找不到类com.test.package.Testclass
  • 设置embedded-xom=false可成功构建,但需手动部署XOM并关联,不符合自动化需求;且相同流水线在其他规则项目中运行正常,已排除JAR损坏问题

可能的原因与对应解决方法

1. Java版本兼容性问题

IBM ODM 9.5.0官方支持的最高Java版本为Java 11,当前使用的Java 21属于较新版本,其URI处理逻辑存在变更,导致ODM CLI编译器解析JAR路径时出现层级错误。

  • 解决方法:在GitLab CI运行器中切换到Java 8或Java 11环境。可通过CI配置指定对应JDK镜像(例如openjdk:11-jdk-slim),或用update-alternatives命令切换系统默认JDK。

2. XOM类路径格式问题

Linux环境下类路径需用冒号(:)分隔,若xom-classpath使用相对路径、包含空格或特殊字符,CI环境的工作目录切换可能导致编译器无法正确解析JAR的URI。

  • 解决方法:
    • 将testX-xom.jar的路径改为绝对路径,例如xom-classpath=/builds/your-project/testX-xom.jar
    • 检查路径中是否存在空格或特殊字符,若有则用引号包裹或重命名文件/目录
    • 确保类路径中无重复的JAR引用

3. ODM CLI编译器XOM嵌入逻辑限制

ODM 9.5.0的CLI编译器在嵌入XOM时,对JAR结构或Manifest内容有隐性要求,自定义构建的XOM JAR可能不符合规范。

  • 解决方法:
    • 使用ODM Studio导出合规的XOM JAR,替换自行构建的testX-xom.jar
    • 在build.properties中添加xom-include=all参数,确保完整嵌入XOM的所有类与资源
    • 尝试将XOM JAR解压后,把类文件目录加入xom-classpath再执行构建

4. CI环境文件权限问题

GitLab CI运行器的执行用户可能没有testX-xom.jar的可读权限,导致编译器无法读取JAR文件,进而触发URI解析错误。

  • 解决方法:在CI脚本中添加权限设置命令,例如chmod 644 ./testX-xom.jar,确保JAR文件可被读取

验证步骤

  1. 切换Java版本至11,重新执行构建命令
  2. 替换xom-classpath为绝对路径,检查构建结果
  3. 用ODM Studio导出的XOM JAR替换当前的testX-xom.jar,测试构建是否成功

内容的提问来源于stack exchange,提问作者Charfeddine Mohamed Ali

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.11 14:03:15