解決IDEA和Eclipse中 引入了對應的jar包卻出現ClassNotFoundException
如果你的問題屬於“引入jar包後編譯能通過但在web中呼叫就報ClassNotFoundException”,請認真看下面的解決方案。不屬於請自覺繞道。^_^
出現這種問題就說明你引入的jar包在WEB-INF\lib下不存在。那為什麼能通過編譯呢?拜託,編譯的時候又不從WEB-INF\lib目錄下尋找類,是從classpath下尋找的,也就是說你引入的jar包只是存在於classpath下。既然分析清楚問題出在哪裡,下面就分別演示在IDEA和Eclipse下怎麼把jar包正確的引入WEB-INF\lib裡面。
在Eclipse下:
在Eclipse下,很多人會這樣引入jar包:
先在專案根目錄下建立一個資料夾,將jar包放入:
再選中所有jar包,單擊右鍵,點選Add to Build Path
這時候專案就會出現這個Libraries:
這樣就引入了Junit的包,可以使用Junit進行單元測試,因為簡單的Junit測試並不涉及web環境,所以這樣並不會報錯。
若你引入的jar包中會在web環境中使用,上述引入方法就行不通了。因為需要從WEB-INF\lib中尋找jar包,而不是classpath下,所以需要將jar包放在WEB-INF\lib下。專案中出現Web App Libraries代表引入成功。如果沒有出現,需要右鍵jar包,選擇Add to Build Path,否則無法通過編譯。
在IDEA下:
- 如果建立的web專案中WEB-INF下存在lib目錄,將jar包放入其中後右鍵,選擇Add as Library...即可
- 如果沒有,可以自行建立後執行上述步驟
- 如果不想建立,請看如下步驟:
建立一個資料夾將jar包放入,後右鍵選擇Add as Library...
之後開啟專案結構介面:
開啟後按照這個步驟操作即可: