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

Gradle打包Kotlin项目为JAR时出现module-info.class重复报错如何解决?

问题原因
  • 你当前的jar任务配置是将所有编译依赖的内容全部解压后打入同一个Jar包,也就是常说的Fat Jar/可执行胖包配置。
  • 项目依赖中存在多个包含Java 9模块描述文件module-info.class的组件,这类文件统一存放在META-INF/versions/9/路径下,打包时多个同名文件产生冲突。
  • Gradle 7.0及以上版本对重复文件的默认处理规则是抛出异常终止构建,不会默认覆盖或忽略重复文件,因此直接触发报错。
  • 你提供的项目存放路径和该报错没有关联,不需要调整路径。
修复方案

在你现有的tasks.jar配置块中添加重复文件处理规则即可,修改后的配置如下:

tasks.jar {
    manifest {
        attributes["Main-Class"] = "MainKt"
    }
    // 新增重复文件处理策略
    duplicatesStrategy = DuplicatesStrategy.EXCLUDE
    configurations["compileClasspath"].forEach { file: File ->
        from(zipTree(file.absoluteFile))
    }
}
  • 上述配置指定的DuplicatesStrategy.EXCLUDE会自动跳过重复的文件,不会影响普通Kotlin应用的正常运行。如果有特殊需求,也可以根据场景换成DuplicatesStrategy.FIRST(保留第一个遇到的文件)或DuplicatesStrategy.LAST(保留最后一个遇到的文件)。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.04 23:21:02