Eclipse 下找不到或無法載入主類的解決辦法
轉自:http://my.oschina.net/leejun2005/blog/106789,寫的太好了!
有時候 Eclipse 會發神經,好端端的 project 就這麼編譯不了了,連 Hello World 都會報“找不到或無法載入主類(Exception in thread "main" java.lang.NoClassDefFoundError:xxx)”的錯誤,我已經遇到好幾次了,以前是懶得深究就直接重建project了,但遇到次數多了必須深究下了,現總結幾種解決方案,大家根據自己的情況逐一嘗試即可。
1、是因為.java檔案不在專案的src路徑內,也就是說原始碼未被eclipse編譯,位元組碼不存在無法運行了,在專案名上右鍵 -> Builder Path -> Configure Build Path -> 選擇Source面板,再點Add Folder, 把原始碼所在的包路徑的上層目錄加進來,而且如果你是把兩個類寫在一個檔案裡的話,你在右鍵選擇Run As Java Appication 的時候,要把游標置於包括main方法的類上(相當於指定主類入口)。
2、專案的Java Build Path中的Libraries中也許某個jar包是不可用的,顯示紅色叉叉。這說明系統找不到這個這個jar檔案,把這個jar刪除或者重新載入進來即可。
3、某些情況下,最快捷的解決辦法是,開啟帶有main函式的類,ctrl +A (全選)---> ctrl +X(剪下)-----> ctrl+S(儲存)--->關閉---->再開啟--->ctrl +V (貼上) ---->OK;一句話就是剪切出去 關閉 再粘進來。(相當於讓 eclipse 重新編譯一下,如果你開啟了自動編譯的話。)
4、最常見的問題應該是下面的情況:package 被當做 folder 來對待了,導致所有的 .java 檔案無法被 eclipse 識別,自然也就無法識別 main 函式,也就沒法編譯運行了,案例截圖:
此時最快的解決方案是右鍵原始碼資料夾選擇:
src > remove from build path → src > Build Path > Use as Source Folder
最後說下 Folder 和 package 的區別:Folder靠"/"來進行上下級劃分,package靠“.”來進行上下級劃分
5、最壞的情況下,估計你得重建 Project。(這是最土但是最有效的解決方案)
6、如果上述不行,大家直接在 cmd 下 javac 然後 java 執行試試,如果這都報錯,那是你的 jdk 或者 os 環境有問題了。