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

如何修复DITA Open Toolkit运行时出现的URI Resolver错误?

DITA-OT Saxon URIResolver 报错修复方案

根因

报错核心为Saxon依赖版本冲突:JVM启动DITA-OT时优先加载了系统全局ClassPath下的不兼容Saxon版本,而非DITA-OT自带的匹配版本。不兼容版本的Saxon中不存在net.sf.saxon.Configuration.setURIResolver(javax.xml.transform.URIResolver)方法,因此抛出NoSuchMethodError。
oXygen内置DITA-OT可正常运行,是因为oXygen做了ClassPath隔离,启动时不读取系统全局依赖配置,仅加载自身目录下的匹配版本依赖,不会触发冲突。

修复步骤

按以下优先级操作即可解决问题:

  • 清理全局ClassPath中的Saxon引用
    • 打开Windows系统环境变量配置面板,检查当前用户变量和系统变量中的CLASSPATH条目,删除所有包含saxon字样的jar包路径(常见为其他XML处理工具、老旧Java开发工具手动添加的Saxon-HE/Saxon-PE/Saxon-B包路径)
    • 检查当前使用的JDK安装目录:JDK8及更早版本查看jre/lib/ext目录,高版本JDK查看lib目录,删除手动放入的所有Saxon相关jar包
    • 关闭现有命令行窗口,重新打开新窗口执行echo %CLASSPATH%确认输出内容中无Saxon相关路径,再进入DITA-OT安装目录执行dita --version,正常输出版本号即修复完成
  • 若不想修改全局环境配置,可修改DITA-OT启动脚本调整ClassPath加载优先级
    • 打开DITA-OT安装目录下的bin/dita.bat脚本
    • 找到脚本中拼接ClassPath的代码段,将DITA-OT自带lib目录的路径放在ClassPath变量的最前端,保证JVM优先加载DITA-OT自带依赖,不会被全局路径的同包名类覆盖
    • 保存脚本后重新执行命令即可
  • Ant构建场景规避冲突
    • 不要使用系统全局安装的Ant执行DITA构建,全局Ant会默认加载系统ClassPath下的依赖,极易触发版本冲突
    • 直接调用DITA-OT安装目录下bin/ant.bat脚本执行构建任务,该脚本默认仅加载DITA-OT自身的依赖包,不会读取全局ClassPath配置

验证

修复完成后先执行dita install测试,无Saxon相关报错后,再运行HTML5、XHTML plus CSS示例构建任务即可正常执行。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.28 14:54:26