打開Myeclipse,在Package Explorer中新建Web工程,隨便取個名
2
選中工程,右鍵選擇MyEclipse-->Add Struts Capabilities
3
選擇Struts2.1,點下一步,選擇Struts 2 Core Libraries和Spring 2 Spring Libraries,URL-pattern選擇/*,然後finish
4
類似的,選中工程,右鍵選擇MyEclipse-->Add Spring Capabilities,選中如圖這四項,點next,直到finish
5
類似的,選中工程,右鍵選擇MyEclipse-->Add Hibernate Capabilities,選中如圖這兩項,點下一步,直到選擇數據庫這裏。
6
添加Hibernate包這一步稍後會刪掉,所以數據庫先選擇系統自帶的這個就行
7
最後一步,爲Session Factory類所在的包取個名字,比如com.test,然後finish
8
加Hibernate包是爲了看Hibernate框架所需的jar包都要哪些,按後面的路徑找到myeclipse下jar保存在的位置,將所有的jar包複製一份(不包括cglib-2.2.jar),放到自己的文件夾下。我這裏的圖片是去掉cglib-2.2.jar後的。
9
將Hinerbate 3.3 Annotation & Entity Manager ,右鍵Build Path-->remove from Build Path,同樣,將Hibernate 3.3 Core Libraries也remove掉
10
再將Hinerbate所需的包手動添加進來,右鍵工程,Build Path-->Add External Archives,找到你將hinerbate包存放的路徑下,將包都添加進去。這時加進去的包就在Referenced Libraries下了
11
最後最重要的一步,這時struts core下的antlr包還會衝突,所以打開安裝目錄
D:/MyEclipse8.5/MyEclipse-8.5/configuration/org.eclipse.osgi/bundles 下搜索antlr-2.7.2.jar都刪除掉,然後在 D:/MyEclipse8.6/Common/plugins 搜索 *struts*.jar 會發現,出來三個選中 一個文件,,打開方式選擇壓縮包,,我的winRAR的,com.genuitec.eclipse.cross.easystruts.eclipse_8.5.0.me201007231647.jar 在lib下和data/1.3下要刪除antlr-2.7.2.jar(這個是刪除struts 1.3裏面的)
而再打開 com.genuitec.eclipse.struts2_8.50.me201007292038.jar data/2.1/core 下刪除antlr-2.7.2.jar (這個是刪除 struts 2.1裏面的)
好了,這個就從struts1.3和2.1中移除了,因爲這兩個jar是common目錄下的,所以刪除了後,再運行myeclipse後, myeclipse就不能再從這兩個包中找antlr-2.7.2.jar 並加載了。如果程序部署過,別忘了刪TOMCAT下lib中的antlr-2.7.2.jar,或者整個項目全部刪除,重新部署。
END
注意事項
可以利用同樣的方法將Struts2框架所需的包和Spring框架所用的包都找到存下來,下次建工程就可以全部手動添加了,就不用以上那麼麻煩了。
SSH框架整合起衝突的包需要刪除的包就是Struts Core下的antlr-2.7.2.jar和hibernate aop下的cglib-2.2.jar,在複製包時切記不要複製上這兩個
注意注意:
工程發佈後執行hibernate語句會報錯:java.lang.NoSuchMethodError: antlr.collections.AST.getLine(),以前已經聽說過是個jar包衝突的問題,原來也算SSH整合時一個經典的bug(主要怪MyEclipse):Struts自帶的antlr-2.7.2.jar與Hibernate3.3自帶的antlr-2.7.6.jar發生衝突,需要刪除舊的jar包.
不過刪起來到沒那麼容易了,折騰半天最後誤刪了一個Struts2的jar包導致整個MyEclipse都崩潰了,後來只好重裝MyEclipse,:-(,看來雖然大家會遇到同樣的問題,不過解決辦法未必一樣.
雖然過程麻煩點不過總算搞好了,最後總結如下:
在MyEclipse的configuration\org.eclipse.osgi\bundles目錄下搜索antlr-2.7.2.jar,刪除所有antlr-2.7.2的jar包文件;