NoSuchMethodError是一个运行时错误,在编译时一般不会出现这个错误。
既然能成功编译,就说明方法本身是存在的,方法所在的类也是存在的,而且都可以正常的引用到。
方法本身是存在的,方法所在类也是存在的,那么在运行时还会出现这个错误,就只能说明运行时引用的类里面没有这个方法。
这说起来有点拗口,简单的说,就是存在至少两个类名一样的类A和B,其中A有一个need方法,B则没有这个方法。编译时,编译器发现依赖路径下有需要的类A或者B,则编译通过。一般认为java源文件和class字节码文件不一致导致的,可以测试删除字节码文件重新maven install一下,如果还是不行,备份一下java文件,删除项目的java文件,重新创建一个java文件,把备份的重新粘贴 到项目的java文件中,再maven install一下。