myeclipse開發與部署原理

一直把myeclipse當成一個普通的工具來用,覺得很方便,並沒有仔細研究其中的道理

 這兩天在弄OA的時候突然考慮到這個問題

比如在添加struts,hibernate支持的時候,一旦添加這些jar包就被添加進項目同時myeclipse自動將其添加到了classpath中,這樣整個項目中根據myeclipse按照classpath查找,就能找到所有jar包中的文件了。

但是可以發現,這樣的jar包的位置都是在myeclipse中,使用的是myeclipse自身帶的那些jar包,這樣的方式存在缺點:

1.  將整個項目拷貝出來,如果在別的機子上導入就會出現問題。因爲項目中對於這些jar包是引用原來的那個位置的jar包,而在別的機子上導入,那個位置就未必有那個jar包,而且大多數時候都沒有

解決辦法;將上述框架或者外部的jar包都手動放到WEB-INF/lib目錄下,這樣myeclipse會自動將其添加到classpath(具體可以查看整個項目的.classpath文件可以看到),這樣即使出現遷移的時候整個項目的拷貝並不會出現任何問題。

當然,如果項目不涉及遷移性,就自己一個人使用或者一直在一臺機子上使用,就不會產生任何的問題,你每次導入,你的myeclipse只要沒有重裝或者改變位置,它依然能夠找到這些jar包,並不會出現問題

同時,對於部署web項目到服務器這樣的問題,在部署的時候我們不必考慮jar包的問題,myeclipse會把classpath上使用到的jar包都部署到服務器比如tomcat上.

但是即便是將jar包放到WEB-INF/lib下,也並不是就不會有任何問題,由於放到那下面之後myeclipse會自動添加進classpath,不然項目的src下的文件就訪問不到,但是一旦添加到classpath也就會自動在部署的時候將其添加到項目的lib目錄中,所以有可能就會出現兩套jar包。對於這樣的問題解決辦法就是:在WEB-INF/lib下添加jar包的時候不要使用子目錄,比如同時添加struts,hibernate,JUnit時候,就直接在WEB-INF/lib下添加,不要簡歷struts,hibernate,JUnit這樣的子目錄,來區別不同的jar包。因爲實際上這沒有實際意義,在添加後我們使用的時候一般情況下不會查看,只是爲了myeclipse和項目能夠正常工作,所以在lib下建立子目錄來以示層次並沒有實際意義。這樣即便WEB-INF/lib中jar包被添加到classath而會被再部署到如tomcat這樣的服務器,但是由於本身的WEB-INF/lib中已經有,這個也會部署到那個位置,所以二者由於同名,只會保存一份,就不會出現有兩份jar包的情況了


總結:

1. 在WEB-INF/lib下放置使用的外部jar包,並且不要新建子目錄直接放置,可以解決上述提到的問題


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章