Github标签版本引发Java NumberFormatException编译错误求助
问题解决方案
错误原因分析
java.lang.NumberFormatException: For input string: "0-a2" 是因为构建流程中存在版本号解析逻辑,错误地将版本号分段里的0-a2当作整数进行转换——预发布后缀-a2导致该分段包含非数字字符,触发转换失败。
具体解决步骤
1. 排查版本号解析逻辑
- 检查项目构建脚本(Maven
pom.xml、Gradlebuild.gradle):查看是否有手动拆分版本号并转换为整数的代码,比如错误把v1.0.0-a2拆分为1、0-a2两个分段,而非正确的1、0、0、a2。 - 核查版本管理插件配置:如果使用Maven Versions插件、Gradle版本目录等工具,确认插件是否支持语义化版本(SemVer)的预发布格式,若配置有误需调整规则。
2. 彻底清理缓存
- Jenkins端:
- 删除对应构建任务的工作区:进入任务页面→「工作区」→「删除工作区」,再重新触发构建。
- 清理工具缓存:进入「系统管理」→「全局工具配置」,清理Maven/Gradle的代理缓存;若为Pipeline任务,临时注释脚本中的
cache缓存指令后重试。
- 本地仓库缓存(若Jenkins使用本地代理):
- Maven:删除
~/.m2/repository下对应项目的缓存目录;Gradle:删除~/.gradle/caches中的相关缓存文件。
- Maven:删除
3. 清理Git标签缓存
- 在Jenkins服务器的项目本地Git仓库目录,执行命令强制清理过时标签:
git fetch --prune --tags - 再次确认Github远端的
v1.0.0-a2标签已完全删除,避免Jenkins拉取到旧缓存。
4. 验证版本格式
- 先创建不带预发布后缀的标签(如
v1.0.0)触发构建,确认基础版本解析正常。 - 若正常,调整预发布版本格式(如改为
v1.0.0-alpha2或v1.0.0-a.2),验证解析器是否能正确识别。
5. 定位报错源头
- 查看Jenkins完整构建日志的堆栈信息,找到抛出异常的具体类和方法:
- 若为项目代码问题:替换手动解析逻辑,使用成熟的SemVer解析库(如Java的
semver4j)处理版本号。 - 若为第三方插件问题:升级插件到最新版本,或调整插件配置以支持预发布版本格式。
- 若为项目代码问题:替换手动解析逻辑,使用成熟的SemVer解析库(如Java的
内容的提问来源于stack exchange,提问作者Marc
相关产品推荐
相关产品推荐

