解決Eclipse中“詭異”的錯誤:找不到或無法載入主類,eclipse載入
找了很多文章,這個協助我解決了現在的問題。
原文串連:https://blog.csdn.net/u010512607/article/details/46350813
近兩天在用Eclipse寫代碼的時候突發奇想,把所有產生的 .class 檔案統統刪掉,以為只要重新運行就可以重建新的 class 檔案,哪知道出問題了,控制台提示->錯誤:找不到或無法載入主類……。自己忙活了好久,也沒有有效解決方案。後來在網上找了找,終於發現了真正的原因。
原來,Eclipse 中的 Java 編譯器是基於 .java 檔案的新舊來判斷是否進行編譯。也就是說,一個 .java 檔案如果不更新,那麼 Eclipse 中的編譯器就不會對其進行再次編譯。
前面提到的刪掉了所有的 .class 檔案後點擊運行報錯主要也是這個原因。刪除 .class 檔案後,在 .java 檔案沒有變化的時候是不會被重新編譯的,那麼 JVM 在運行 .class 檔案時就找不到 .class 檔案,於是就報錯。那麼,該怎麼解決呢?
我們知道,Eclipse 預設情況下第一次點擊運行表徵圖或者右鍵->Run As 一個源檔案時,會提示如下:
圖1
也就是讓我們選擇是否在運行前自動儲存源檔案,這樣在對源檔案進行修改過後就可以立即反映到運行結果中。如果勾上Always save resources before launching,那麼每次運行都會判斷檔案是否已經更新並進行儲存,如果要對其進行設定,可以在 Window->Preferences->Run/Debug->Launching 中進行設定:
圖2
而在 Eclipse 中還有一點得注意,如果勾選了在運行前儲存源檔案,那麼,源檔案也會被編譯,因為在預設的 Windows->Preferences->General->Workspace 中,有這樣一條:
圖3
只要源檔案一有變化(儲存後)就會自動進行編譯操作,缺點是必須得做點什麼然後儲存,所以如果源檔案中沒有使用到其它 .java 檔案中自訂的類的時候,可以對其進行象徵性的修改以使其變成新的,然後運行就行了。否則還得把用到的類也進行同樣的操作然後儲存運行。
注意,還有但是,這樣做太麻煩了,而且對於一包含大量源檔案的工程來說,這麼做也不太現實。所以得找一個一勞永逸的解決之道。答案就是:
Project->Clean...
Clean...操作會將該工程以前的所有編譯資訊清空,然後預設將所在工程的所有 .java 檔案都進行一次編譯,這樣的話就可以方便地進行修改與運行了。
寫了這麼多,總結一下關於刪掉 .class 檔案運行報錯的幾種解決辦法:
1、對於單個檔案,並且沒有使用到在別的 .java 檔案中自訂的類,可以對其進行象徵性的修改,加空格或者類似的操作,然後儲存。如果使用了其它類,那麼就得在對應的類中也作修改並儲存,或者修改完後一齊儲存。
2、簡單粗暴又有效辦法,Project->Clean...,將所在工程以往的編譯資訊都清空並全都重新編譯一次。