关于java.lang.NoSuchMethodError产生的原因及处理方式
关于java.lang.NoSuchMethodError产生的原因及处理方式
今天晚上学习在学习GUI编程的时候无意中发现了这个问题,截图如下
就是这么一小段代码,然后代码的每一行都没有任何错误,但是一运行就提示有错,点击Proceed后继续弹出这种错误。然后打开了几篇博客。基本上和项目有关,然后最后重新大了jar包就好了,原因就说了下和老版本有关。
看完直接懵逼,我这小小的代码根本无需jar包。然后就把类名MyFrame改成MyFrame1就运行成功了。突然间想起了马士兵老师在JavaSE教“类与对象”时记下的:“java的cmd编程的classpath小问题:每一个类都会产生一个class文件,所以在classpath设置时要把.(当前目录)放在最前面,要不然会出错”
回头看了下了目录,发现有之前在同一个包下有重名类了,改成MyFrame1后如图:
由此推断错误是由于调用了之前编译的class文件导致的。(也就是调用了老版本的class文件)
接下来又引发出来了一个问题:既然这两个MyFrame在同一目录下,自然不可能出现两个class同时出现(因为文件名相同),那为什么不是后面一个把其前面一个覆盖了呢?这个和Eclipse的编译运行先后顺序有关。自己命令行javac和java确实达到了把原来的class文件覆盖的效果。
链接:https://blog.****.net/qingquanyingyue/article/details/86674987
https://blog.****.net/piglite/article/details/50813468
幸好两个MyFrame类里面写的不是同样的方法吗,要不然运行成功却始终不是预定的结果,人TM都得疯掉