关键字: MyEclipse6.0.0 GA Hibernate
问题:
最近在搞SSH,用的是MyEclipse6。今天用它来给一个新工程add Hibernate Capabilities.但是部署运行项目,其间报错如下:
1. %%%% Error Creating SessionFactory %%%%
2. java.lang.SecurityException: class "org.apache.commons.collections.SequencedHashMap"'s signer information does not match signer information of other classes in the same package
3. at java.lang.ClassLoader.checkCerts(ClassLoader.java:775)
4. at java.lang.ClassLoader.preDefineClass(ClassLoader.java:487)
5. at java.lang.ClassLoader.defineClass(ClassLoader.java:614)
6. at java.security.SecureClassLoader.defineClass(SecureClassLoader.java:124)
7. at org.apache.catalina.loader.WebappClassLoader.findClassInternal(WebappClassLoader.java:1817)
8. at org.apache.catalina.loader.WebappClassLoader.findClass(WebappClassLoader.java:872)
9. at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1325)
10. at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1204)
11. at java.lang.ClassLoader.loadClassInternal(ClassLoader.java:319)
12. at org.hibernate.mapping.Table. (Table.java:33)
13. at org.hibernate.cfg.Mappings.addTable(Mappings.java:165)
14. at org.hibernate.cfg.HbmBinder.bindRootPersistentClassCommonValues(HbmBinder.java:299)
15. at org.hibernate.cfg.HbmBinder.bindRootClass(HbmBinder.java:282)
16. at org.hibernate.cfg.HbmBinder.bindRoot(HbmBinder.java:153)
17. at org.hibernate.cfg.Configuration.add(Configuration.java:386)
18. at org.hibernate.cfg.Configuration.addInputStream(Configuration.java:427)
19. at org.hibernate.cfg.Configuration.addResource(Configuration.java:482)
20. at org.hibernate.cfg.Configuration.parseMappingElement(Configuration.java:1465)
21. at org.hibernate.cfg.Configuration.parseSessionFactory(Configuration.java:1433)
22. at org.hibernate.cfg.Configuration.doConfigure(Configuration.java:1414)
23. at org.hibernate.cfg.Configuration.doConfigure(Configuration.java:1390)
24. at org.hibernate.cfg.Configuration.configure(Configuration.java:1310)
25. at edu.dhu.hibernate.HibernateSessionFactory. (HibernateSessionFactory.java:30)
26. at edu.dhu.hibernate.BaseHibernateDAO.getSession(BaseHibernateDAO.java:13)
27. at edu.dhu.service.UserServiceImpl.isValidUser(UserServiceImpl.java:58)
28. at edu.dhu.struts.action.LoginAction.execute(LoginAction.java:48)
29. at org.apache.struts.action.RequestProcessor.processActionPerform(RequestProcessor.java:431)
30. at org.apache.struts.action.RequestProcessor.process(RequestProcessor.java:236)
31. at org.apache.struts.action.ActionServlet.process(ActionServlet.java:1196)
32. at org.apache.struts.action.ActionServlet.doPost(ActionServlet.java:432)
33. at javax.servlet.http.HttpServlet.service(HttpServlet.java:710)
34. at javax.servlet.http.HttpServlet.service(HttpServlet.java:803)
35. at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:290)
36. at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
37. at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:233)
38. at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:175)
39. at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:128)
40. at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102)
41. at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)
42. at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:263)
43. at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:844)
44. at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:584)
45. at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:447)
46. at java.lang.Thread.run(Thread.java:595)
解决方案1
查阅网上解答,得知为MyEclipse6里面的Hibernate library是有问题的。于是我把Hibernate的库从Build Path中remove掉。然后从网上下载Hibernate,把Hibernate3.jar和其lib下所有jar文件拷贝到我的项目的lib下。这样,重新部署和运行,没有再出现该报错。下载各种版本hibernate包的地址是:http://prdownloads.sourceforge.net/hibernate/?sort_by=date&sort=desc
解决方案2
主要是commons-collections.jar包冲突,把你下载的那个jar包拷贝到lib下替换掉原来的即可。下载地址:http://ttitfly.javaeye.com/topics/download/a1a098f3-49db-4e28-ad76-a9af560b3fee
SSH常出这一类问题。解决办法是参看文档,选择兼容的版本,而且最有可能出问题的就是Hibernate
解决方案3 (据说这个最管用,但我建议根据情况的不同,选用不同的解决方案。)
很多人在用struts和hibernate整合开发时会碰到“%%%% Error Creating SessionFactory? %%%%”,解决方法是需将commons-beanutils-1.7.0.zip下的三个jar包放到project/web-inf/lib下即可。 下载地址:Apache : commons-beanutils-1.7.0.zip(http://apache.mirror.phpchina.com/commons/beanutils/binaries/commons-beanutils-1.7.0.zip)