SSH整合常见错误.docx
- 文档编号:4360809
- 上传时间:2022-11-30
- 格式:DOCX
- 页数:23
- 大小:103.18KB
SSH整合常见错误.docx
《SSH整合常见错误.docx》由会员分享,可在线阅读,更多相关《SSH整合常见错误.docx(23页珍藏版)》请在冰豆网上搜索。
SSH整合常见错误
spring+hibernate出错小结:
(1)java.lang.NoClassDefFoundError:
org/hibernate/context/CurrentSessionContext
原因:
出现这错误时,请更改hibernate的包,更新至最新或3.1以上
(2)java.lang.NoClassDefFoundError:
javax/transaction/TransactionManager
原因:
缺少jta.jar或者是找不到hbm.xml文件导致sessionfactory出错,检查hbm文件路径是否正确,文件是否存在
(3)错误:
Exceptioninthread"main"org.hibernate.exception.SQLGrammarException:
CouldnotexecuteJDBCbatchupdate
或者org.springframework.jdbc.BadSqlGrammarException:
Hibernateoperation:
couldnotinsert:
[com.yourcompany.model.Login];badSQLgrammar[insertintomysql__login(name,password)values(?
,?
)];nestedexceptionisjava.sql.SQLException:
Table'mysql.mysql__login'doesn'texistjava.sql.SQLException:
Table'mysql.mysql__login'doesn'texist
原因与解决:
因为HibernateTools(或者Eclipse本身的DatabaseExplorer)生成*.hbn.xml工具中包含有catalog="***"(*表示数据库名称)这样的属性,将该属性删除就可以了
(4)org.springframework.orm.hibernate3.HibernateQueryException:
undefinedalias
原因:
在spring配置文件中,可能你设置了
org.hibernate.hql.classic.ClassicQueryTranslatorFactory,指定了HQL的解释器,请删除或更改另一个解释器org.hibernate.hql.ast.ASTQueryTranslatorFactory,如果没有设置,请确认是否有写错了HQL语句,是否与POJO里的属性一样。
注意区分大小写。
(5)quartz报错:
Causedby:
java.lang.NoSuchMethodError:
mons.collections.SetUtils.orderedSet(Ljava/util/Set;)Ljava/util/Set;
原因是由于使用的commons-collections.jar版本太低导致的要使用3.*的才行,下载地址为:
http:
//commons.apache.org/downloads/download_collections.cgi
选Binary下的zip下载,下载后将里的的commons-collections-x.x.x.jar放置到你的classpath里即可。
记得删除旧的那个jar包
(6)org.springframework.beans.factory.CannotLoadBeanClassException:
Cannotfindclass[com.mchange.v2.c3p0.ComboPooledDataSource]forbean
这是因为你的sping配置文件是使用c3p0作数据池,而你的classpath里没有找到这个c3p0的jar包而导致的,下载一个jar导入classpath即可。
地址为:
(7)TheNetworkAdaptercouldnotestablishtheconnection
请检查你的url,user,pwd,dialect等等是否正确
(8)java.lang.NoClassDefFoundError:
org/hibernate/cfg/HbmBinder$SecondPass
原因:
你更新了hibernate3.2的包,但你的classpath里可能存在hibernate-annotations.jar的包,删除之或更新至最新版本的包即可。
(9)java.lang.IllegalAccessError:
triedtoaccessmethodnet.sf.ehcache.CacheManager.
原因:
可能你更新了hiberante的包,导致原来的原来ehcache不行了,原来使用的是1.1的版本,换成1.5以上的正常,另还需要一个javassist.jar包
(10)Connectionscouldnotbeacquiredfromtheunderlyingdatabase
大概的意思是说:
不能连接当前所配置的数据库,检查你的URL链接字符串是否正确。
(11)org/apache/commons/pool/impl/GenericObjectPool的解决方法
java.lang.NoClassDefFoundError:
org/apache/commons/pool/impl/GenericObjectPool原因:
找不到Causedby:
java.lang.NoClassDefFoundError:
org/apache/commons/pool/impl/GenericObjectPool
就是Apache所提供的基本对象池。
解决:
到这里http:
//commons.apache.org/downloads/download_pool.cgi下载包,然后,把里面的commons-pool-x.jar复制到myEclipse的ReferencedLibraries下.
(12)错误提示:
java.lang.NoClassDefFoundError:
org/apache/commons/collections/LRUMap类没找到,
或org/apache/commons/collections/SequenceHashMap类没找到:
工程里的commons-collections.jar包与其它包不匹配导致的,例如如果你用
commons-beanutils-1.7.0.jar,commons-collections-3.2.jar时会出现你的那种问题,如果是commons-beanutils-1.7.0.jar,commons-collections-3.1.jar就不会就这种问题了...祝你好运啦
(13)Spring2.0与Hibernate3.0的错误解决
严重:
action:
null
org.springframework.beans.factory.BeanCreationException:
Errorcreatingbeanwithname
'sessionfactory'definedinServletContextresource[/WEB-INF/beans-config.xml]:
Initializationofbeanfailed;nestedexceptionisjava.lang.SecurityException:
class"mons.collections.SequencedHashMap"'ssignerinformationdoesnotmatchsignerinformationofotherclassesinthesamepackage
java.lang.SecurityException:
class"mons.collections.SequencedHashMap"ssignerinformationdoesnotmatchsignerinformationofotherclassesinthesamepackage
atjava.lang.ClassLoader.checkCerts(ClassLoader.java:
775)
atjava.lang.ClassLoader.preDefineClass(ClassLoader.java:
487)
atjava.lang.ClassLoader.defineClass(ClassLoader.java:
614)
atjava.security.SecureClassLoader.defineClass(SecureClassLoader.java:
124)at
org.apache.catalina.loader.WebappClassLoader.findClassInternal(WebappClassLoader.java:
1817)
atorg.apache.catalina.loader.WebappClassLoader.findClass(WebappClassLoader.java:
872).........
Spring2.0AOPLiberaries里的asm2.2.3.jar和Hiberate中的生成代理用的asm.jar冲突,后来把asm2.2.3.jar删了才好使
或者
java.lang.NoClassDefFoundError:
org/objectweb/asm/CodeVisitor
java.lang.NoClassDefFoundError:
org/objectweb/asm/commons/EmptyVisitor
java.lang.NoSuchMethodError:
org.objectweb.asm.ClassVisitor.visit
java.lang.NoSuchMethodError:
org.objectweb.asm.ClassVisitor.visit(IILjava/lang/String;Ljava/lang/String;[Ljava/lang/String;Ljava/lang/String;)V
这个错误是因为系统需要一个叫“asm.jar”的包,而这个包在SpingAop包中和Hibernate包中都有,而且不象话的是这两个包中的类org.objectweb.asm.ClassVisitor的方法visit方法签名竟然不一样,所以解决方法很简单,项目在加HIBERNATE3能力的时候不加库,直接用Spring的AOP的库就可以了。
在使用Spring的AOP编程时,会用到这几个lib:
asm-2.2.2.jar
asm-commons-2.2.2.jar
asm-util-2.2.2.jar
Hibernate使用如果lib:
asm.jar
asm-attrs.jar
其中asm-2.2.2.jar与asm.jar存在类上的冲突!
使用其中之一或两者都使用,可能会出现如下错误:
java.lang.NoClassDefFoundError:
org/objectweb/asm/CodeVisitor
java.lang.NoClassDefFoundError:
org/objectweb/asm/commons/EmptyVisitor
java.lang.NoSuchMethodError:
org.objectweb.asm.ClassVisitor.visit。
。
。
。
。
。
解决办法是:
去掉类路径上的关于Hibernate的3个lib
asm.jar
asm-attrs.jar
cglib-2.1.3.jar
保留Spring中的以下4个lib
asm-2.2.2.jar
asm-commons-2.2.2.jar
asm-util-2.2.2.jar
cglib-nodep-2.1_3.jar
或去掉asm-commons-2.2.2.jar
asm-util-2.2.2.jar
cglib-nodep-2.1_3.jar
(14)错误提示:
net.sf.cglib.core.CodeGenerationException:
java.lang.reflect.InvocationTargetException-->null
Causedby:
java.lang.reflect.InvocationTargetException
Causedby:
java.lang.SecurityException:
class"com.wuwei.struts.bean.User$$EnhancerByCGLIB$$1016ffbf"'ssignerinformationdoesnotmatchsignerinformationofotherclassesinthesamepackage
在….hbm.xml文件中,将class标签的lazy属性改为false(默认为true)
如果有schema="dbo"catalog="test"配置信息,请将其删除
(15)错误提示:
java.lang.OutOfMemoryError:
Javaheapspace的解决方法
1、设置环境变量
setJAVA_OPTS=-Xms32m-Xmx512m可以根据自己机器的内存进行更改,但本人测试这种方法并没有解决问题。
可能是还有哪里需要设置。
2、java-Xms32m-Xmx800mclassName
就是在执行JAVA类文件时加上这个参数,其中className是需要执行的确类名。
(包括包名)这个解决问题了。
而且执行的速度比没有设置的时候快很多。
如果在测试的时候可能会用Eclispe这时候就需要在Eclipse->run-arguments中的VMarguments
(16)tomcat5的common/lib目录下jar包和WEB/lib下jar包冲突问题
启动tomcat5,基本正常,打开普通的JSP也正常,但打开与struts相关的jsp报错如下:
Javax.Servlet.ServletException:
javax.servlet.jsp.PageContext.handlePageException(Ljava/lang/Throwable;)V
org.apache.jASPer.servlet.JspServlet.service(JspServlet.java:
256)
javax.servlet.http.HttpServlet.service(HttpServlet.java:
868)
在tomcat/common/lib/中也放入了J2EE.jar等包,去common/lib中处不必要的包后,保证tomcat/common/lib/和WEB-INF/lib这两个目录下的jar没有重复的,问题解决。
原来,tomcat启动后先将tomcat/common/lib目录下的jar包全部读入内存,如果webapps目录里的应用程序中WEB-INF/lib目录下有相同的包,将无法加载,估计不同版本的包之间也会造成类似问题。
因此建议尽量不要把jar包放入tomcat/common/lib目录下,应该放入WEB-INF/lib目录下。
(17)java.lang.NoClassDefFoundError:
net/sf/hibernate/Session
后来发现,原来是HibernateDaoSupport类import引用的版本问题,应该与系统中使用的Hibernate框架的版本对应。
在此就是
org.springframework.orm.hibernate3.support.HibernateDaoSupport而不是org.springframework
(18)错误:
java.lang.NullPointerException
StandardWrapperValve[action]:
Servlet.service()forservletactionthrewexception
javax.servlet.jsp.JspException:
Cannotretrievemappingforaction/settlementTypeManage
或者:
typeStatusreport
messageServletactionisnotavailable
descriptionTherequestedresource(Servletactionisnotavailable)isnotavailable.
原因:
发现dao实例、manage实例等需要注入的东西没有被注入
解决:
这个时候,你应该查看日志文件;默认是应用服务器的log文件,比如Tomcat就是[Tomcat安装目录]/logs;你会发现提示你:
可能是:
org.springframework.beans.factory.BeanCreationException:
Errorcreatingbeanwithname'sf'definedinServletContextresource[/WEB-INF/applicationContext.xml]:
Initializationofbeanfailed;nestedexceptionisorg.hibernate.HibernateException:
couldnotconfigurefromURL:
file:
src/hibernate.cfg.xml
org.hibernate.HibernateException:
couldnotconfigurefromURL:
file:
src/hibernate.cfg.xml
……………………….
Causedby:
java.io.FileNotFoundException:
src\hibernate.cfg.xml
可能是:
org.springframework.beans.factory.BeanCreationException:
Errorcreatingbeanwithname'sessionFactory'definedinServletContextresource[/WEB-INF/applicationContext.xml]:
Initializationofbeanfailed;nestedexceptionisorg.hibernate.MappingException:
Resource:
com/mcc/coupon/model/UserRole.hbm.xmlnotfound
org.hibernate.MappingException:
Resource:
com/mcc/coupon/model/UserRole.hbm.xmlnotfound
然后你就知道原因是因为配置文件的解析出了错误,这个通过Web页面是看不出来的。
更多的是持久化映射文件出的错误;导致了没有被解析;当然你需要的功能就无法使用了。
(19) 错误:
StandardWrapperValve[jsp]:
Servlet.service()forservletjspthrewexception
java.lang.ClassNotFoundException:
org.apache.struts.taglib.bean.CookieTei
界面错误具体描述:
org.apache.jasper.JasperException:
FailedtoloadorinstantiateTagExtraInfoclass:
org.apache.struts.taglib.bean.CookieTei
原因与解决:
<方案一>你的”tml:
”开头的标签没有放在一个中
<方案二>重新启动你的应用服务器,自动就没有这个问题了
(20)错误:
java.sql.SQLException:
Field'userId'doesn'thaveadefaultvalue
原因:
把配置文件的主键改为
(21)错误:
org.hibernate.ObjectDeletedException:
deletedobjectwouldbere-savedbycascade(removedeletedobjectfromassociations)
原因与解决:
方法1删除Set方的cascade
方法2解决关联关系后,再删除
方法3在many-to-one方增加cascade但值不能是none
最后一招:
检查一下hashCodeequals是否使用了id作为唯一标示的选项了;我用uuid.hex时是没有问题的;但是用了native,就不行了,怎么办?
删除啊!
这个错误可以参见我的blog文章:
(22)错误:
exceptionjavax.servlet.ServletException:
BeanUtils.populatrootcause
java.lang.IllegalArgumentException:
Cannotinvoke***Form.set***-argumenttypemismatch
原因:
这个问题很奇怪的说,为什么说奇怪呢?
主要针对Form是日期型的来说的;因为我做过N多系统Form中都是用java.util.Date,都是没有问题的。
解决:
第一:
你把Date换成String;在Action中进行转换;当然转换要借助于SimpleDateFormate
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- SSH 整合 常见 错误