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

Java运行报错java.lang.ClassFormatError:setPassword方法签名重复是什么原因?

java.lang.ClassFormatError: Duplicate method name "setPassword" 问题成因

报错原始信息如下:

Exception in thread "main" java.lang.ClassFormatError: Duplicate method name "setPassword" with signature

该错误本质是JVM加载类文件时,检测到类中存在两个签名完全一致的setPassword方法,属于类格式异常,常见产生场景如下:

  • Lombok等编译期注解处理冲突(最高发):如果你的类password字段加了@Setter注解,或者类上标注了@Data注解,Lombok默认会自动生成一个public修饰的setPassword方法。如果你同时手动写了一个参数列表完全相同的setPassword方法,且没有修改访问修饰符为private等和Lombok生成规则不同的级别,低版本Lombok或IDE增量编译出现异常时,不会在编译阶段提示方法重复错误,反而会把两个同签名方法都写入class文件,类加载时就会抛出该错误。
  • 字节码操作异常:使用ASM、Javassist等字节码增强工具动态生成/修改类字节码时,如果写入setPassword方法的逻辑被重复执行,会直接生成携带重复方法的异常字节码,运行时加载就会触发报错。
  • 依赖打包冲突:项目依赖的多个Jar包中存在全限定名完全相同的类,两个同名类都定义了setPassword方法,打包阶段出现字节码合并异常时,也可能生成携带重复方法的类文件,触发该错误。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.25 13:36:07