記錄下來遇到的(問題,解決方法),是更有效的解決問題的方式。(原諒我領悟的太晚與懶,今後用更有意義的方法,作一個更有意義的人)java
由於遇到了屢次,參考同一個方法,原文鏈接:https://blog.csdn.net/u010512607/article/details/46350813web
近兩天在用Eclipse寫代碼的時候突發奇想,把全部生成的 .class 文件通通刪掉,覺得只要從新運行就能夠從新生成新的 class 文件,哪知道出問題了,控制檯提示->錯誤:找不到或沒法加載主類……。本身忙活了很久,也沒有有效的解決方法。後來在網上找了找,終於發現了真正的緣由。spa
原來,Eclipse 中的 Java 編譯器是基於 .java 文件的新舊來判斷是否進行編譯。也就是說,一個 .java 文件若是不更新,那麼 Eclipse 中的編譯器就不會對其進行再次編譯。.net
前面提到的刪掉了全部的 .class 文件後點擊運行報錯主要也是這個緣由。刪除 .class 文件後,在 .java 文件沒有變化的時候是不會被從新編譯的,那麼 JVM 在運行 .class 文件時就找不到 .class 文件,因而就報錯。那麼,該怎麼解決呢?orm
咱們知道,Eclipse 默認狀況下第一次點擊運行圖標或者右鍵->Run As 一個源文件時,會提示以下:blog
也就是讓咱們選擇是否在運行前自動保存源文件,這樣在對源文件進行修改事後就能夠當即反映到運行結果中。若是勾上Always save resources before launching,那麼每次運行都會判斷文件是否已經更新並進行保存,若是要對其進行設置,能夠在 Window->Preferences->Run/Debug->Launching 中進行設置:ip
而在 Eclipse 中還有一點得注意,若是勾選了在運行前保存源文件,那麼,源文件也會被編譯,由於在默認的 Windows->Preferences->General->Workspace 中,有這樣一條:ci
只要源文件一有變化(保存後)就會自動進行編譯操做,缺點是必須得作點什麼而後保存,因此若是源文件中沒有使用到其它 .java 文件中自定義的類的時候,能夠對其進行象徵性的修改以使其變成新的,而後運行就好了。不然還得把用到的類也進行一樣的操做而後保存運行。編譯器
注意,還有可是,這樣作太麻煩了,並且對於一包含大量源文件的工程來講,這麼作也不太現實。因此得找一個一勞永逸的解決之道。答案就是:it
Project->Clean...
Clean...操做會將該工程之前的全部編譯信息清空,而後默認將所在工程的全部 .java 文件都進行一次編譯,這樣的話就能夠方便地進行修改與運行了。
寫了這麼多,總結一下關於刪掉 .class 文件運行報錯的幾種解決辦法:
一、對於單個文件,而且沒有使用到在別的 .java 文件中自定義的類,能夠對其進行象徵性的修改,加空格或者相似的操做,而後保存。若是使用了其它類,那麼就得在對應的類中也做修改並保存,或者修改完後一齊保存。
二、簡單粗暴又有效的辦法,Project->Clean...,將所在工程以往的編譯信息都清空並全都從新編譯一次。