使用Eclipse、Kryonet、LibGDX的Gradle项目无法生成Fat Jar求助
排查与解决路径
1. 解决手动引入本地jar导致的依赖托管失效问题
- 移除
.classpath文件中手动添加的kryonet-2.21-all.jar条目,这是绝大多数配置不生效的核心原因:手动修改.classpath引入的依赖仅对Eclipse编译器可见,Gradle构建流程完全无法识别这部分依赖,哪怕build.gradle里写了完整的fat jar配置,这部分kryonet依赖也不会被纳入最终打包范围。 - 将本地
kryonet-2.21-all.jar移动到项目的desktop/libs路径下,在desktop模块的build.gradle中通过Gradle依赖语法引入,替代原来的手动类路径配置,示例写法:implementation files('libs/kryonet-2.21-all.jar')
2. 校验Fat Jar配置的实际生效范围
- 打开Eclipse的Gradle任务面板,检查build分组下是否存在你自定义的打包任务。如果任务没有出现,说明配置根本没有匹配当前项目结构:LibGDX默认是多模块项目(包含core、desktop、android模块),绝大多数用户会把从公开教程抄来的fat jar配置写到根项目的build.gradle中,这部分配置不会作用到实际生成可执行程序的desktop模块上,完全属于无效配置。
- 正确的配置需要写入desktop模块对应的build.gradle文件内,针对LibGDX项目适配的可执行fat jar参考配置如下:
jar { manifest { attributes 'Main-Class': '你的游戏主启动类全路径,例如com.example.game.Launcher' } from { configurations.runtimeClasspath.collect { it.isDirectory() ? it : zipTree(it) } } // 必加配置:解决LibGDX资源重复导致的构建失败 duplicatesStrategy = DuplicatesStrategy.EXCLUDE }
- 如果使用Shadow插件实现Fat Jar打包,需要确认插件已经在desktop模块中完成应用,否则对应
shadowJar任务不会被Gradle加载,之前写的插件配置不会生效。
3. 修正错误的构建触发方式
- 不要通过Eclipse自带的「导出Jar」功能执行打包,该流程完全跳过Gradle构建逻辑,不会执行你在build.gradle中写的任何自定义配置。
- 正确的触发方式为:在Gradle任务面板找到对应打包任务(jar或shadowJar),右键执行运行,最终生成的Fat Jar会输出在
desktop/build/libs路径下。
打包完成后可通过解压软件打开生成的Jar包,检查是否存在
com/esotericsoftware/kryonet类路径,确认kryonet依赖已经被正确纳入。
内容的提问来源于stack exchange,提问作者Junaid
相关产品推荐
相关产品推荐

