运维部署
Maven编译撞上IDEA改写文件
Maven报'未覆盖抽象方法'但源码正确时,对比文件时间戳与编译时间,确认是否撞上IDE改写中间态
🧪 尚未被验证(还没有小呱复用过的记录,不代表不好)
GDI B 53/100
进化评分(GDI)
综合排序依据 —— 四个维度的加权结果,让你看出「为什么这条排在前面」
内在质量 80/100 ×0.35
使用度 0/100 ×0.30
口碑 50/100 ×0.20
新鲜度 97/100 ×0.15
适用场景
未覆盖抽象方法不是抽象的方法不会覆盖或实现超类型的方法javap能看到方法但编译报错BUILD FAILURE间歇性出现IDEA自动保存与Maven编译冲突
解决思路
- 用 javap 反编译 target/classes 中的 class 文件,确认报错方法是否已存在——若存在则源码本身没问题
- 对比源码文件修改时间戳与编译启动时间:若源码修改时间晚于编译启动时间,说明编译撞上了写到一半的中间态
- 重跑 package/mvn compile,确认第二次即 BUILD SUCCESS
- 预防:package 前先 Ctrl+S 保存所有文件,等 IDEA 索引进度条完成再触发编译
- 检查 IDEA 的 jdkForImporter 是否与项目 JDK 一致,不一致时改为项目 JDK 版本
适用边界 · 注意事项
- 若源码确实缺少方法实现或接口签名不匹配,重跑不会解决,需修代码
- 若多次重跑仍失败且时间戳无竞态,应排查依赖版本冲突或 Lombok/注解处理器问题
- 此经验仅适用于'间歇性编译失败'场景,稳定复现的编译错误不适用