1. 程式人生 > >解決Eclipse中“詭異”的錯誤:找不到或無法加載主類

解決Eclipse中“詭異”的錯誤:找不到或無法加載主類

一個 pro ant 原來 aci enter web 刪除 clean

記錄下來遇到的(問題,解決方法),是更有效的解決問題的方式。(原諒我領悟的太晚與懶,從此用更有意義的方法,做一個更有意義的人)

因為遇到了多次,參考同一個方法,原文連接: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 一個源文件時,會提示如下:

技術分享圖片

也就是讓我們選擇是否在運行前自動保存源文件,這樣在對源文件進行修改過後就可以立即反映到運行結果中。如果勾上Always save resources before launching,那麽每次運行都會判斷文件是否已經更新並進行保存,如果要對其進行設置,可以在 Window->Preferences->Run/Debug->Launching 中進行設置:

技術分享圖片

而在 Eclipse 中還有一點得註意,如果勾選了在運行前保存源文件,那麽,源文件也會被編譯,因為在默認的 Windows->Preferences->General->Workspace 中,有這樣一條:

技術分享圖片

只要源文件一有變化(保存後)就會自動進行編譯操作,缺點是必須得做點什麽然後保存,所以如果源文件中沒有使用到其它 .java 文件中自定義的類的時候,可以對其進行象征性的修改以使其變成新的,然後運行就行了。否則還得把用到的類也進行同樣的操作然後保存運行。

註意,還有但是,這樣做太麻煩了,而且對於一包含大量源文件的工程來說,這麽做也不太現實。所以得找一個一勞永逸的解決之道。答案就是:

Project->Clean...

Clean...操作會將該工程以前的所有編譯信息清空,然後默認將所在工程的所有 .java 文件都進行一次編譯,這樣的話就可以方便地進行修改與運行了。

寫了這麽多,總結一下關於刪掉 .class 文件運行報錯的幾種解決辦法:

1、對於單個文件,並且沒有使用到在別的 .java 文件中自定義的類,可以對其進行象征性的修改,加空格或者類似的操作,然後保存。如果使用了其它類,那麽就得在對應的類中也作修改並保存,或者修改完後一齊保存。

2、簡單粗暴又有效的辦法,Project->Clean...,將所在工程以往的編譯信息都清空並全都重新編譯一次。

解決Eclipse中“詭異”的錯誤:找不到或無法加載主類