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

使用picocli+picocli-shell-jline3配置Java模块触发未命名模块读包编译错误

问题根因

这是Java模块化体系下的拆分包冲突问题。JLine从3.16版本开始将原本拆分的多个子模块(org.jline.reader、org.jline.console等)合并为单个org.jline模块,而你使用的picocli-shell-jline3:4.6.1依赖的是旧版本拆分的JLine子模块,导致模块路径中同一个包同时存在于多个JAR文件中,触发编译报错。

解决方案
  • 方案1:手动排除picocli传递的拆分JLine依赖
    修改你的Gradle依赖配置,排除picocli-shell-jline3传递引入的旧版拆分JLine子模块,显式引入合并后的单模块JLine,配置示例如下:
dependencies {
    implementation 'org.fusesource.jansi:jansi:2.3.4'
    implementation 'info.picocli:picocli:4.6.1'
    implementation('info.picocli:picocli-shell-jline3:4.6.1') {
        exclude group: 'org.jline', module: 'jline-reader'
        exclude group: 'org.jline', module: 'jline-console'
        // 若存在其他org.jline前缀的拆分依赖,也统一在此排除
    }
    // 显式引入合并后的单模块JLine,可选择3.16以上的任意稳定版本
    implementation 'org.jline:jline:3.22.0'
    annotationProcessor 'info.picocli:picocli-codegen:4.6.1'
}

配置完成后清理项目构建缓存,重新执行编译即可。

  • 方案2:升级picocli到适配版本
    将所有picocli相关依赖的版本升级到4.7.0及以上,该版本开始的picocli-shell-jline3已经默认适配合并后的单模块JLine,无需手动排除依赖,直接引入即可正常编译。

  • 配置校验
    你当前的module-info.java配置无需额外调整,保留requires org.jline;即可满足依赖要求。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.29 12:57:03