SSH整合常见错误.docx

上传人:b****5 文档编号:4360809 上传时间:2022-11-30 格式:DOCX 页数:23 大小:103.18KB
下载 相关 举报
SSH整合常见错误.docx_第1页
第1页 / 共23页
SSH整合常见错误.docx_第2页
第2页 / 共23页
SSH整合常见错误.docx_第3页
第3页 / 共23页
SSH整合常见错误.docx_第4页
第4页 / 共23页
SSH整合常见错误.docx_第5页
第5页 / 共23页
点击查看更多>>
下载资源
资源描述

SSH整合常见错误.docx

《SSH整合常见错误.docx》由会员分享,可在线阅读,更多相关《SSH整合常见错误.docx(23页珍藏版)》请在冰豆网上搜索。

SSH整合常见错误.docx

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.()Vfromclassorg.hibernate.cache.EhCacheProvider

原因:

可能你更新了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

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 高中教育 > 高中教育

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1