Java模块化Gradle项目集成Saxon-HE依赖报错求助
解决Saxon-HE在Java 11模块化Gradle项目中的构建问题
以下是针对性的解决方案:
确认Saxon-HE的正确模块名
低版本的Saxon-HE没有自带module-info.java,属于JPMS自动模块。模块名优先以jar包META-INF/MANIFEST.MF中的Automatic-Module-Name属性为准:- 找到Gradle本地仓库中的Saxon-HE jar包(路径一般是
~/.gradle/caches/modules-2/files-2.1/net.sf.saxon/Saxon-HE/[版本号]/) - 解压jar包,查看
META-INF/MANIFEST.MF,查找Automatic-Module-Name字段 - 若该字段存在(比如新版本Saxon-HE的
net.sf.saxon),则用这个值作为requires指令的模块名;若不存在,自动模块名由jar文件名推导(比如saxon-he-9.9.1-7.jar推导为saxon.he)
- 找到Gradle本地仓库中的Saxon-HE jar包(路径一般是
修正module-info.java的requires指令
替换IDE提示的错误指令,示例如下:module your.module.name { requires net.sf.saxon; // 或根据实际模块名修改为requires saxon.he; // 其他requires指令... }Gradle依赖配置优化(可选)
若使用的Saxon-HE版本未指定Automatic-Module-Name,可以在Gradle依赖中手动指定,避免模块名推导错误:dependencies { implementation('net.sf.saxon:Saxon-HE:[你的版本号]') { attributes { attribute('Automatic-Module-Name', 'net.sf.saxon') } } }清理缓存并重新构建
- 执行
./gradlew clean build清理旧构建产物并重新编译 - 若IntelliJ仍有异常提示,执行
File -> Invalidate Caches... -> Invalidate and Restart清理IDE缓存
- 执行
内容的提问来源于stack exchange,提问作者neblaz
相关产品推荐
相关产品推荐

