1. 打开Myeclipse,在Package Explorer中新建Web工程,随便取个名

    在Myeclipse中整合SSH框架之导jar包

  2. 2

    选中工程,右键选择MyEclipse-->Add Struts Capabilities

    在Myeclipse中整合SSH框架之导jar包

  3. 3

    选择Struts2.1,点下一步,选择Struts 2 Core Libraries和Spring 2 Spring Libraries,URL-pattern选择/*,然后finish

    在Myeclipse中整合SSH框架之导jar包

  4. 4

    类似的,选中工程,右键选择MyEclipse-->Add Spring Capabilities,选中如图这四项,点next,直到finish

    在Myeclipse中整合SSH框架之导jar包

    在Myeclipse中整合SSH框架之导jar包

  5. 5

    类似的,选中工程,右键选择MyEclipse-->Add Hibernate Capabilities,选中如图这两项,点下一步,直到选择数据库这里。

    在Myeclipse中整合SSH框架之导jar包

  6. 6

    添加Hibernate包这一步稍后会删掉,所以数据库先选择系统自带的这个就行

    在Myeclipse中整合SSH框架之导jar包

  7. 7

    最后一步,为Session Factory类所在的包取个名字,比如com.test,然后finish

    在Myeclipse中整合SSH框架之导jar包

  8. 8

    加Hibernate包是为了看Hibernate框架所需的jar包都要哪些,按后面的路径找到myeclipse下jar保存在的位置,将所有的jar包复制一份(不包括cglib-2.2.jar),放到自己的文件夹下。我这里的图片是去掉cglib-2.2.jar后的。

    在Myeclipse中整合SSH框架之导jar包

  9. 9

    将Hinerbate 3.3 Annotation & Entity Manager ,右键Build Path-->remove from Build Path,同样,将Hibernate 3.3 Core Libraries也remove掉

  10. 10

    再将Hinerbate所需的包手动添加进来,右键工程,Build Path-->Add External Archives,找到你将hinerbate包存放的路径下,将包都添加进去。这时加进去的包就在Referenced Libraries下了

    在Myeclipse中整合SSH框架之导jar包

  11. 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包文件;