如今的項目基本上都是java web項目,因此導入jar包會出現問題,主要介紹一下java項目與javaweb項目的區別: java
java項目: web
在classLoader加載jar和class的時候,是分開加載的,通常jar導入分兩種: tomcat
1.在web-inf下的lib中直接引入 服務器
2.在user library上引入 app
不管以上哪一種引入,jar包都能加載而且運行,classLoader會智能加載(本地JRE運行) webapp
javaweb項目; server
不是經過本地的JRE運行的,而是部署到web服務器(好比tomcat,jetty),這些服務器都實現了自身的類加載器. 部署
以tomcat爲例: web服務器
1.common CommonClassLoader class
2.server CatalinaClassLoader
3.shared SharedClassLoader
4.webapps webappClassLoader(加載WEB-INF下的jar)
簡單來講,若是作javaweb項目引入jar包的時候,須要將jar包導入到WEB-INF下,這樣服務器就可以加載而且項目跑起來的時候,項目的方法也能夠調用,若是放入到user library中是不能夠的,由於這樣只能本地運行,服務器是加載不到的.因此項目本地調用方法的時候沒有問題,可是服務器跑起來就會報出找不到相應的jar.
(我的觀點)