MyEclipse 开发 SSH 应用中的两个常见错误的解决方法
关键字: ssh 解决方法
关于MyEclipse 6.0.0 GA开发SSH应用的
Error Creating SessionFactory java.lang.SecurityException: class"org.apache.commons.collections.SequencedHashMap"'异常的解决方案
昨天有读者提到用 MyEclipse 6.0.0 开发 Struts + Hibernate应用的时候,单独测试Hibernate的类没有问题,但是当Web层和Struts整合后,就抛出如下异常:
%%%%Error Creating SessionFactory %%%% java.lang.SecurityException: class"org.apache.commons.collections.SequencedHashMap"'s signer informationdoes not match signer information of other classes in the same package
因为我用的6.0.1,所以怎么也没出现这个异常。后来Google搜到很多人遇到了这个故障,猜测是commons-collections.jar的问题,可能和MyEclipse 6.0.0自带的包有问题导致。例如下面的是一个解决方案:http://ttitfly.javaeye.com/blog/131955
解决方案:
1)下载 MyEclipse 6.0.1 来开发;
2)或者去http://commons.apache.org/collections/ 下载一个新的包,把原来的commons-collections-xxx.jar给删了,然后用新的包替换。注意:一定要到应用的发布目录去做这个工作,而且替换后不能重新发布应用,然后立即重启Tomcat再测试。
如果再报下面的错误:
则是:
Spring 和 Hibernate 共用的一些 jar 文件发生了版本冲突, 删除 WEB-INF/lib/asm-2.2.3.jar即可
MyEclipse 开发 SSH 整合时 java.lang.NoSuchMethodError: org.objectweb.asm.ClassVisitor.visit 解决方案
这篇文章解决了问题, 核心提示:
2007-08-08 发现用 MyEclipse 5.5 做 Struts 1.2 + Spring 2.0 + Hibernate 3.1 整合时启动过程中报如下的错误:
2007-08-08 15:36:17,406 ERROR [org.hibernate.proxy.BasicLazyInitializer] - CGLIB Enhancement failed: dao.User
java.lang.NoSuchMethodError:org.objectweb.asm.ClassVisitor.visit(IILjava/lang/String;Ljava/lang/String;[Ljava/lang/String;Ljava/lang/String;)V
at net.sf.cglib.core.ClassEmitter.begin_class(ClassEmitter.java:77)
Spring 和 Hibernate 共用的一些 jar 文件发生了版本冲突, 删除 WEB-INF/lib/asm-2.2.3.jar 然后重启 Tomcat.
asm-2.2.3.jar
asm.jar
asm-attrs.jar
asm-commons-2.2.3.jar
asm-util-2.2.3.jar
原文参考: http://heweiya.javaeye.com/blog/101575
下面是一个完整的出错信息:
Error Creating SessionFactory java.lang.SecurityException: class"org.apache.commons.collections.SequencedHashMap"'异常的解决方案
昨天有读者提到用 MyEclipse 6.0.0 开发 Struts + Hibernate应用的时候,单独测试Hibernate的类没有问题,但是当Web层和Struts整合后,就抛出如下异常:
%%%%Error Creating SessionFactory %%%% java.lang.SecurityException: class"org.apache.commons.collections.SequencedHashMap"'s signer informationdoes not match signer information of other classes in the same package
因为我用的6.0.1,所以怎么也没出现这个异常。后来Google搜到很多人遇到了这个故障,猜测是commons-collections.jar的问题,可能和MyEclipse 6.0.0自带的包有问题导致。例如下面的是一个解决方案:http://ttitfly.javaeye.com/blog/131955
解决方案:
1)下载 MyEclipse 6.0.1 来开发;
2)或者去http://commons.apache.org/collections/ 下载一个新的包,把原来的commons-collections-xxx.jar给删了,然后用新的包替换。注意:一定要到应用的发布目录去做这个工作,而且替换后不能重新发布应用,然后立即重启Tomcat再测试。
如果再报下面的错误:
- ERROR [org.hibernate.proxy.BasicLazyInitializer] - CGLIB Enhancement failed: dao.User
- java.lang.NoSuchMethodError:org.objectweb.asm.ClassVisitor.visit(IILjava/lang/String;Ljava/lang/String;[Ljava/lang/String;Ljava/lang/String;)V
- at net.sf.cglib.core.ClassEmitter.begin_class(ClassEmitter.java:77)
ERROR [org.hibernate.proxy.BasicLazyInitializer] - CGLIB Enhancement failed: dao.User
java.lang.NoSuchMethodError:org.objectweb.asm.ClassVisitor.visit(IILjava/lang/String;Ljava/lang/String;[Ljava/lang/String;Ljava/lang/String;)V
at net.sf.cglib.core.ClassEmitter.begin_class(ClassEmitter.java:77)
则是:
Spring 和 Hibernate 共用的一些 jar 文件发生了版本冲突, 删除 WEB-INF/lib/asm-2.2.3.jar即可
MyEclipse 开发 SSH 整合时 java.lang.NoSuchMethodError: org.objectweb.asm.ClassVisitor.visit 解决方案
这篇文章解决了问题, 核心提示:
2007-08-08 发现用 MyEclipse 5.5 做 Struts 1.2 + Spring 2.0 + Hibernate 3.1 整合时启动过程中报如下的错误:
2007-08-08 15:36:17,406 ERROR [org.hibernate.proxy.BasicLazyInitializer] - CGLIB Enhancement failed: dao.User
java.lang.NoSuchMethodError:org.objectweb.asm.ClassVisitor.visit(IILjava/lang/String;Ljava/lang/String;[Ljava/lang/String;Ljava/lang/String;)V
at net.sf.cglib.core.ClassEmitter.begin_class(ClassEmitter.java:77)
Spring 和 Hibernate 共用的一些 jar 文件发生了版本冲突, 删除 WEB-INF/lib/asm-2.2.3.jar 然后重启 Tomcat.
asm-2.2.3.jar
asm.jar
asm-attrs.jar
asm-commons-2.2.3.jar
asm-util-2.2.3.jar
原文参考: http://heweiya.javaeye.com/blog/101575
下面是一个完整的出错信息:
- 2007-10-7 10:44:42 org.apache.catalina.core.StandardContext listenerStart
- 严重: Exception sending context initialized event to listenerinstance of class org.springframework.web.context.ContextLoaderListener
- org.springframework.beans.factory.BeanCreationException: Errorcreating bean with name 'entityManagerFactory' defined inServletContext resource [/WEB-INF/classes/applicationContext.xml]:Invocation of init method failed; nested exception isjava.lang.ExceptionInInitializerError
- Caused by: java.lang.ExceptionInInitializerError
- at org.hibernate.proxy.pojo.cglib.CGLIBLazyInitializer.getProxyFactory(CGLIBLazyInitializer.java:117)
- at org.hibernate.proxy.pojo.cglib.CGLIBProxyFactory.postInstantiate(CGLIBProxyFactory.java:43)
- at org.hibernate.tuple.entity.PojoEntityTuplizer.buildProxyFactory(PojoEntityTuplizer.java:162)
- at org.hibernate.tuple.entity.AbstractEntityTuplizer.<init>(AbstractEntityTuplizer.java:135)
- at org.hibernate.tuple.entity.PojoEntityTuplizer.<init>(PojoEntityTuplizer.java:55)
- at org.hibernate.tuple.entity.EntityEntityModeToTuplizerMapping.<init>(EntityEntityModeToTuplizerMapping.java:56)
- at org.hibernate.tuple.entity.EntityMetamodel.<init>(EntityMetamodel.java:295)
- at org.hibernate.persister.entity.AbstractEntityPersister.<init>(AbstractEntityPersister.java:434)
- at org.hibernate.persister.entity.SingleTableEntityPersister.<init>(SingleTableEntityPersister.java:109)
- at org.hibernate.persister.PersisterFactory.createClassPersister(PersisterFactory.java:55)
- at org.hibernate.impl.SessionFactoryImpl.<init>(SessionFactoryImpl.java:226)
- at org.hibernate.cfg.Configuration.buildSessionFactory(Configuration.java:1294)
- at org.hibernate.cfg.AnnotationConfiguration.buildSessionFactory(AnnotationConfiguration.java:915)
- at org.hibernate.ejb.Ejb3Configuration.buildEntityManagerFactory(Ejb3Configuration.java:730)
- at org.hibernate.ejb.HibernatePersistence.createEntityManagerFactory(HibernatePersistence.java:121)
- at javax.persistence.Persistence.createEntityManagerFactory(Persistence.java:51)
- atorg.springframework.orm.jpa.LocalEntityManagerFactoryBean.createNativeEntityManagerFactory(LocalEntityManagerFactoryBean.java:91)
- at org.springframework.orm.jpa.AbstractEntityManagerFactoryBean.afterPropertiesSet(AbstractEntityManagerFactoryBean.java:251)
- atorg.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.invokeInitMethods(AbstractAutowireCapableBeanFactory.java:1202)
- atorg.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1172)
- atorg.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:428)
- at org.springframework.beans.factory.support.AbstractBeanFactory$1.getObject(AbstractBeanFactory.java:251)
- at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:156)
- at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:248)
- at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:160)
- atorg.springframework.beans.factory.support.DefaultListableBeanFactory.preInstantiateSingletons(DefaultListableBeanFactory.java:284)
- at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:352)
- at org.springframework.web.context.ContextLoader.createWebApplicationContext(ContextLoader.java:244)
- at org.springframework.web.context.ContextLoader.initWebApplicationContext(ContextLoader.java:187)
- at org.springframework.web.context.ContextLoaderListener.contextInitialized(ContextLoaderListener.java:49)
- at org.apache.catalina.core.StandardContext.listenerStart(StandardContext.java:3830)
- at org.apache.catalina.core.StandardContext.start(StandardContext.java:4337)
- at org.apache.catalina.core.ContainerBase.addChildInternal(ContainerBase.java:791)
- at org.apache.catalina.core.ContainerBase.addChild(ContainerBase.java:771)
- at org.apache.catalina.core.StandardHost.addChild(StandardHost.java:525)
- at org.apache.catalina.startup.HostConfig.deployDirectory(HostConfig.java:920)
- at org.apache.catalina.startup.HostConfig.deployDirectories(HostConfig.java:883)
- at org.apache.catalina.startup.HostConfig.deployApps(HostConfig.java:492)
- at org.apache.catalina.startup.HostConfig.start(HostConfig.java:1138)
- at org.apache.catalina.startup.HostConfig.lifecycleEvent(HostConfig.java:311)
- at org.apache.catalina.util.LifecycleSupport.fireLifecycleEvent(LifecycleSupport.java:117)
- at org.apache.catalina.core.ContainerBase.start(ContainerBase.java:1053)
- at org.apache.catalina.core.StandardHost.start(StandardHost.java:719)
- at org.apache.catalina.core.ContainerBase.start(ContainerBase.java:1045)
- at org.apache.catalina.core.StandardEngine.start(StandardEngine.java:443)
- at org.apache.catalina.core.StandardService.start(StandardService.java:516)
- at org.apache.catalina.core.StandardServer.start(StandardServer.java:710)
- at org.apache.catalina.startup.Catalina.start(Catalina.java:566)
- at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
- at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
- at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
- at java.lang.reflect.Method.invoke(Unknown Source)
- at org.apache.catalina.startup.Bootstrap.start(Bootstrap.java:288)
- at org.apache.catalina.startup.Bootstrap.main(Bootstrap.java:413)
- Caused by: java.lang.SecurityException: class"org.objectweb.asm.CodeVisitor"'s signer information does not matchsigner information of other classes in the same package
- at java.lang.ClassLoader.checkCerts(Unknown Source)
- at java.lang.ClassLoader.preDefineClass(Unknown Source)
- at java.lang.ClassLoader.defineClass(Unknown Source)
- at java.security.SecureClassLoader.defineClass(Unknown Source)
- at org.apache.catalina.loader.WebappClassLoader.findClassInternal(WebappClassLoader.java:1817)
- at org.apache.catalina.loader.WebappClassLoader.findClass(WebappClassLoader.java:872)
- at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1325)
- at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1204)
- at java.lang.ClassLoader.loadClassInternal(Unknown Source)
- at net.sf.cglib.core.KeyFactory$Generator.generateClass(KeyFactory.java:165)
- at net.sf.cglib.core.DefaultGeneratorStrategy.generate(DefaultGeneratorStrategy.java:25)
- at net.sf.cglib.core.AbstractClassGenerator.create(AbstractClassGenerator.java:216)
- at net.sf.cglib.core.KeyFactory$Generator.create(KeyFactory.java:145)
- at net.sf.cglib.core.KeyFactory.create(KeyFactory.java:117)
- at net.sf.cglib.core.KeyFactory.create(KeyFactory.java:108)
- at net.sf.cglib.core.KeyFactory.create(KeyFactory.java:104)
- at net.sf.cglib.proxy.Enhancer.<clinit>(Enhancer.java:69)
- ... 54 more
- 2007-10-7 10:44:42 org.apache.catalina.core.StandardContext start
- 严重: Error listenerStart
- 2007-10-7 10:44:42 org.apache.catalina.core.StandardContext start
- 严重: Context [/d1] startup failed due to previous errors
- 2007-10-7 10:44:42 org.apache.catalina.core.ApplicationContext log
- 信息: Closing Spring root WebApplicationContext
- 2007-10-7 10:44:42 org.apache.catalina.loader.WebappClassLoader loadClass
- 信息: Illegal access: this web application instance has been stoppedalready. Could not load java.net.BindException. The eventual followingstack trace is caused by an error thrown for debugging purposes as wellas to attempt to terminate the thread which caused the illegal access,and has no functional impact.
- java.lang.IllegalStateException
- at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1244)
- at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1204)
- at java.lang.ClassLoader.loadClassInternal(Unknown Source)
- at com.mysql.jdbc.CommunicationsException.<init>(CommunicationsException.java:155)
- at com.mysql.jdbc.MysqlIO.send(MysqlIO.java:2652)
- at com.mysql.jdbc.MysqlIO.quit(MysqlIO.java:1345)
- at com.mysql.jdbc.Connection.realClose(Connection.java:4731)
- at com.mysql.jdbc.Connection.cleanup(Connection.java:2034)
- at com.mysql.jdbc.Connection.finalize(Connection.java:3244)
- at java.lang.ref.Finalizer.invokeFinalizeMethod(Native Method)
- at java.lang.ref.Finalizer.runFinalizer(Unknown Source)
- at java.lang.ref.Finalizer.access$100(Unknown Source)
- at java.lang.ref.Finalizer$FinalizerThread.run(Unknown Source)
- 2007-10-7 10:44:42 org.apache.catalina.loader.WebappClassLoader loadClass
- 信息: Illegal access: this web application instance has been stoppedalready. Could not load com.mysql.jdbc.Messages. The eventual followingstack trace is caused by an error thrown for debugging purposes as wellas to attempt to terminate the thread which caused the illegal access,and has no functional impact.