DZone Java
“在我机器上能跑”是架构问题
文章认为,“在我机器上能跑”并非调试笑话,而是架构缺陷:系统的一部分行为存在于版本控制之外。源码相同,运行时版本、CPU架构、文件系统语义、语言区域、时区、原生库、证书、环境变量、依赖解析和构建工具等仍可不同;这些隐含输入让开发机成为未记录依赖,说明系统缺乏完整、可复现的构建运行条件定义。可复现构建要求源码与声明输入形成可独立验证的产物路径,机器本身也应视为输入。应显式声明时区、语言区域、编码等默认值,用锁定依赖、受控工具链、固定基础镜像摘要、多平台构建和沙箱/密封构建减少漂移。容器缩小环境边界但不消除差异。开发环境应纳入源码控制,运行时身份需记录并验证;通过CI测试支持的变量、移除不支持的变量,最终把环境假设声明、版本化、测试和可观测,使环境特定故障成为可追踪的工程缺陷。