關於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.csdn.net/qingquanyingyue/article/details/86674987

           https://blog.csdn.net/piglite/article/details/50813468

 

 

幸好兩個MyFrame類裏面寫的不是同樣的方法嗎,要不然運行成功卻始終不是預定的結果,人TM都得瘋掉

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章