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

Github标签版本引发Java NumberFormatException编译错误求助

问题解决方案

错误原因分析

java.lang.NumberFormatException: For input string: "0-a2" 是因为构建流程中存在版本号解析逻辑,错误地将版本号分段里的0-a2当作整数进行转换——预发布后缀-a2导致该分段包含非数字字符,触发转换失败。


具体解决步骤

1. 排查版本号解析逻辑

  • 检查项目构建脚本(Maven pom.xml、Gradle build.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中的相关缓存文件。

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)处理版本号。
    • 若为第三方插件问题:升级插件到最新版本,或调整插件配置以支持预发布版本格式。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.05 15:15:28