Gradle构建jpackage/jlink失败:prepareMergedJarsDir任务报错
Gradle jpackage/jlink构建JavaFX项目报ZipException的排查与解决
报错核心原因
prepareMergedJarsDir任务抛出java.util.zip.ZipException: zip END header not found,本质是某个Jar包损坏或不完整——Zip格式文件的END header是验证完整性的关键标识,缺失或损坏会导致无法正常读取Jar。
排查步骤
- 检查依赖Jar完整性
- 清理本地Gradle缓存:默认路径为
~/.gradle/caches(Windows为C:\Users\<用户名>\.gradle\caches),删除项目对应缓存目录或整个caches文件夹,重新执行构建命令让Gradle重新拉取依赖。 - 手动验证Jar:找到本地缓存或项目libs目录中的Jar文件,用解压工具(如7-Zip)尝试打开,若解压失败则说明该Jar损坏。
- 清理本地Gradle缓存:默认路径为
- 排查本地依赖Jar:如果项目通过
implementation files('libs/xxx.jar')引入本地Jar,检查这些文件是否完整、是否为合法Zip格式,排除下载中断或文件损坏的情况。 - 核对插件与Gradle版本兼容性:确保JavaFX Gradle插件版本与当前Gradle版本匹配,避免因版本不兼容导致的依赖处理异常。
- 检查JDK完整性:jpackage/jlink是JDK 14+特性,确认使用的JDK版本符合要求,且JDK安装包无损坏——可尝试用
jar -tf <某个合法Jar>命令验证JDK的jar工具是否正常工作。
解决方案
- 清理并刷新依赖
执行以下命令强制清理缓存并重新下载依赖:./gradlew clean build --refresh-dependencies - 替换损坏的Jar包
若定位到损坏的依赖Jar,可手动从Maven中央仓库下载对应版本的Jar,替换到本地Gradle缓存的对应路径;或在build.gradle中指定稳定的仓库源(如MavenCentral)。 - 调整插件与Gradle版本
在build.gradle中指定兼容的JavaFX插件版本,示例:
同时核对plugins { id 'application' id 'org.openjfx.javafxplugin' version '0.0.13' }gradle-wrapper.properties中的Gradle发行版URL,确保版本与插件兼容。 - 修复或更换JDK
卸载当前JDK,重新下载Oracle OpenJDK或Adoptium Temurin等官方发行版,确保安装过程无中断,环境变量JAVA_HOME配置正确。
内容的提问来源于stack exchange,提问作者Raju D
相关产品推荐
相关产品推荐

