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

LibGDX游戏执行gradle dist打包.jar时出现重复文件未处理报错

问题原因

Gradle 7及以上版本对打包时的重复文件默认采用FAIL策略,你当前的dist任务会把所有依赖Jar解压后合并打包,多个依赖包中都包含LICENSE.txt文件,没有指定重复处理规则就会触发报错。

解决方案

在dist任务中明确指定重复文件处理策略即可,常用的两种策略可选:

  • DuplicatesStrategy.EXCLUDE:遇到重复文件时直接跳过后续的重复条目
  • DuplicatesStrategy.FIRST:保留第一个遇到的文件,忽略后续重复条目

修改后的dist任务配置

import org.gradle.api.file.DuplicatesStrategy

task dist(type: Jar) {
    manifest {
        attributes 'Main-Class': project.mainClassName
    }
    // 明确指定重复文件处理策略
    duplicatesStrategy = DuplicatesStrategy.EXCLUDE
    dependsOn configurations.runtimeClasspath
    from {
        configurations.runtimeClasspath.collect { it.isDirectory() ? it : zipTree(it) }
    }
    // 可选:额外排除不需要的冲突文件,避免其他重复问题
    exclude 'META-INF/*.RSA', 'META-INF/*.SF', 'META-INF/*.DSA', 'README*', 'LICENSE*'
    with jar
}

补充说明

如果你不需要在最终Jar中保留许可证文件,可以保留上面代码中的exclude配置,直接过滤掉所有LICENSE相关文件,从根源上避免该类重复问题。如果需要保留许可证,仅需设置duplicatesStrategy即可,不需要加exclude配置。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.23 21:45:03