Java中的Jar是如此的重要,以至于沒(méi)有他們,我們就不能做出如此藝術(shù)的程序:封裝、模塊化、復(fù)用等等(無(wú)ant、marven方式) 。
今天,我就來(lái)整理一些有關(guān)項(xiàng)目中的jar包添加管理的方法以及常見(jiàn)問(wèn)題的解決:
1、jar導(dǎo)入到我們的web項(xiàng)目中的classpath下
1)這里呢,一種方法是,直接用MyEclipse里自帶的相關(guān)的項(xiàng)目jar包,右擊項(xiàng)目“MyEclipse”菜單,選擇對(duì)應(yīng)的jar包就OK了,例 “Add Spring Capabilities”,并且可以設(shè)置Spring的一些配置信息,不錯(cuò)的可視化操作;
2)添加外部的jar包到web項(xiàng)目的lib包下,右擊項(xiàng)目“Properties”-->“Java Build Path”-->“Libraries”選項(xiàng)卡(當(dāng)然了,此操作下,不僅僅這一種添加jar包的方式);
3)自己手動(dòng)拷貝jar文件到項(xiàng)目的lib包下,具體操作只要把要添加的jar文件拷貝到MyEclipse中的workspace下的lib包里就好了;
至此,jar文件的添加就OK了,so easy!jar是加進(jìn)去了,但這幾種有什么區(qū)別,以后如何管理呢,接下來(lái)看看第2點(diǎn)
2、三種jar包添加方式,都行得通,很OK,那么要如何擇決呢
1)這種方式,jar文件直接鏈接到MyEclipse的文件下,并沒(méi)有拷貝到WEB-INF/lib目錄下,不得用項(xiàng)目的發(fā)布、移植,可能會(huì)出現(xiàn)jar找不到的情形;
2)選擇性比較的強(qiáng),可以隨意的加jar包,只要在你本機(jī)存在就可以了,鏈接的也是jar文件的絕對(duì)路徑,缺點(diǎn)同1;
3)直接添加到WEB-INF/lib目錄下,移植性強(qiáng),可操作性也強(qiáng)。
總而言之,第3)種jar包導(dǎo)入方式,個(gè)人覺(jué)得還是不錯(cuò)的了!
3、顯示/隱藏項(xiàng)目里的jar文件
不同的開(kāi)發(fā)人員,都有著他固有的習(xí)慣,有的人就覺(jué)得把jar包顯示在開(kāi)發(fā)視圖里太礙眼,看起來(lái)不舒服,復(fù)雜。而有些人呢,他就想研究看看到底運(yùn)用了哪些技 術(shù),導(dǎo)了哪些jar包,并且通過(guò)點(diǎn)擊jar包里的class文件直接查看源碼(假設(shè)先前有導(dǎo)入源碼)。所以呢,這里就牽涉到了一個(gè)jar包的顯示與隱藏問(wèn) 題了:在Package Explorer這個(gè)窗體中,右上角有個(gè)下拉小三角,點(diǎn)擊-->“Filters”-->“Name filter patterns(matching names will be hidden)”,在這一選項(xiàng)下填有*.jar,勾上復(fù)選框即表示這一類的文件不顯示,多個(gè)類型之間可用“,”分隔。
4、在Eclipse工程的Java Build Path設(shè)置中,可以通過(guò)加入第三方的jar包,但是,我發(fā)現(xiàn)是有好幾種方法來(lái)完成這個(gè)操作的,有“Add jars”,“Add Externel jars”,“Add library”,“Add Classes Loader”等,這幾種方式有什么區(qū)別嗎?
add jar是表示從你的工程里添加JAR,前提是你把jar已經(jīng)放到自己的工程目錄里。
add external jar表示這個(gè)jar的位置需要URI來(lái)定位,需要給出全路徑。
add library 是一些已經(jīng)定義好的jar的集合,因?yàn)樗鼈兘?jīng)常是一起用,所以簡(jiǎn)化了些操作,比如你做RCP開(kāi)發(fā)的時(shí)候就會(huì)有個(gè)plugin library包含了運(yùn)行工程所需要的基本插件。
Add classes Loader -- 這個(gè)應(yīng)該是 add class folder吧?這個(gè)跟添加jar是一個(gè)意思,就是告訴ClassLoader去哪找class
5.當(dāng)出現(xiàn)java.lang.ClassNotFoundException: org.springframework.web.context.ContextLoaderListener類似這種找不到Listener的異常 時(shí),要切記spring的jar包一定要放在工程的lib下這樣才能避免這個(gè)錯(cuò)誤的發(fā)生。
補(bǔ)充:雖說(shuō)無(wú)論用什么方式導(dǎo)入包在本地運(yùn)行都是一樣的,但實(shí)事上我運(yùn)行時(shí),有的只有Java Build Path才起作用,有的只有導(dǎo)入到lib下才行。用Java Build Path導(dǎo)入包和把包復(fù)制到lib下是有區(qū)別的,它倆其實(shí)不會(huì)沖突,也沒(méi)有什么關(guān)系的,Java Build Path是我們編譯需要的包,在比如在import ***.***.***時(shí)如果沒(méi)用Java Build Path導(dǎo)入包的話類里面就有紅叉,說(shuō)不識(shí)別這個(gè)類;導(dǎo)入到lib下是程序運(yùn)行時(shí)需要的包,即便用Java Build Path導(dǎo)入過(guò)的包,沒(méi)放到lib下,運(yùn)行項(xiàng)目時(shí)會(huì)出現(xiàn)ClassNotFoundException的異常。