SSH整合常见错误
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
spring+hiberna te出错小结:
(1)ng.NoClass DefFou ndErro r: org/hiberna te/context/Current Sessio nConte xt
原因:出现这错误时,请更改hibe rnate的包,更新至最新或3.1以上
(2)ng.NoClass DefFou ndErro r: javax/transac tion/Transac tionMa nager
原因:缺少jta.jar 或者是找不到h bm.xml文件导致sessio nfacto ry出错,检查hbm文件路径是否正确,文件是否存在
(3) 错误:
Excepti on in thread"main" org.hiberna te.excepti on.SQLGram marExc eption: Could not execute JDBC batch update
或者org.springf ramewo rk.jdbc.BadSqlG rammar Except ion: Hiberna te operati on: could not insert: [com.yourcom pany.model.Login]; bad SQL grammar [insertinto mysql__login(name, passwor d) values(?,?)]; nestedexcepti on is java.sql.SQLExce ption:Table 'mysql.mysql__login'doesn't exist java.sql.SQLExce ption: Table 'mysql.mysql__login' doesn't exist
原因与解决:因为Hiber nate Tools(或者Eclip se本身的D atabas e Explore r)生成*.hbn.xml工具中包含有cata log="***"(*表示数据库名称)这样的属性,将该属性删除就可以了
(4)org.springf ramewo rk.orm.hiberna te3.Hiberna teQuer yExcep tion: undefin ed alias
原因:在spring配置文件中,可能你设置了<prop key="hiberna te.query.factory_class"> org.hiberna te.hql.classic.Classic QueryT ransla torFac tory</prop>,指定了HQL的解释器,请删除或更改另一个解释器o rg.hiberna te.hql.ast.ASTQuer yTrans latorF actory,如果没有设置,请确认是否有写错了HQL语句,是否与POJO里的属性一样。
注意区分大小写。
(5)quartz报错: Causedby: ng.NoSuchM ethodE rror:
org.apache.commons.collect ions.SetUtil s.ordered Set(Ljava/util/Set;)Ljava/util/Set;
原因是由于使用的commo ns-collect ions.jar版本太低导致的要使用3.*的才行,下载地址为:http://commons.apache.org/downloa ds/downloa d_coll ection s.cgi
选Binary下的zip下载,下载后将里的的common s-collect ions-x.x.x.jar放置到你的class path 里即可。
记得删除旧的那个jar包
(6)org.springf ramewo rk.beans.factory.CannotL oadBea nClass Except ion:
Cannotfind class [com.mchangboPo oledDa taSour ce] for bean
这是因为你的s ping配置文件是使用c3p0作数据池,而你的clas spath里没有找到这个c3p0的j ar包而导致的,下载一个jar导入clas spath即可。
地址为:http://sourcef /project/showfil es.php?group_i d=25357&package_id=88527,如果是wind ows的就选择zip的下载。
(7)The Network Adapter could not establi sh the connect ion
请检查你的ur l,user,pwd,dialect等等是否正确
(8)ng.NoClass DefFou ndErro r: org/hiberna te/cfg/HbmBind er$SecondP ass
原因:你更新了hib ernate3.2的包,但你的clas spath里可能存在hi bernat e-annotat ions.jar的包,删除之或更新至最新版本的包即可。
(9)ng.Illegal Access Error:tried to accessmethodnet.sf.ehcache.CacheMa nager.<init>()V from class org.hiberna te.cache.EhCache Provid er
原因:可能你更新了h iberan te的包,导致原来的原来ehcach e不行了,原来使用的是1.1的版本,换成1.5以上的正常,另还需要一个j avassi st.jar包
(10)Connect ions could not be acquire d from the underly ing databas e
大概的意思是说:不能连接当前所配置的数据库,检查你的URL链接字符串是否正确。
(11) org/apache/commons/pool/impl/Generic Object Pool 的解决方法
ng.NoClass DefFou ndErro r: org/apache/commons/pool/impl/Generic Object Pool原因:
找不到 Causedby:
ng.NoClass DefFou ndErro r: org/apache/commons/pool/impl/Generic Object Pool
就是Apach e所提供的基本对象池。
解决:
到这里http://commons.apache.org/downloa ds/downloa d_pool.cgi下载包,然后,把里面的com mons-pool-x.jar复制到m yEclip se的Ref erence d Librari es下.
(12)错误提示:ng.NoClass DefFou ndErro r:
org/apache/commons/collect ions/LRUMap类没找到,
或org/apache/commons/collect ions/Sequenc eHashM ap类没找到:
工程里的com mons-collect ions.jar包与其它包不匹配导致的,例如如果你用
commons-beanuti ls-1.7.0.jar,commons-collect ions-3.2.jar时会出现你的那种问题,如果是com m ons-beanuti ls-1.7.0.jar,commons-collect ions-3.1.jar就不会就这种问题了...祝你好运啦
(13)Spring2.0与Hibernate3.0的错误解决
严重: action: null
org.springf ramewo rk.beans.factory.BeanCre ationE xcepti on: Error creatin g bean with name
'session factor y' defined in Servlet Contex t resourc e [/WEB-INF/beans-config.xml]: Initial izatio n
of bean failed; nestedexcepti on is ng.Securit yExcep tion:
class "org.apache.commons.collect ions.Sequenc edHash Map"'s signerinforma tion does not match signerinforma tion of other classes in the same package
ng.Securit yExcep tion: class "org.apache.commons.collect ions.Sequenc edHash Map"s signerinforma tion does not match signerinforma tion of other classes in the same package
at ng.ClassLo ader.checkCe rts(ClassLo ader.java:775)
at ng.ClassLo ader.preDefi neClas s(ClassLo ader.java:487)
at ng.ClassLo ader.defineC lass(ClassLo ader.java:614)
at java.securit y.SecureC lassLo ader.defineC lass(SecureC lassLo ader.java:124) at
org.apache.catalin a.loader.WebappC lassLo ader.findCla ssInte rnal(WebappC lassLo ader.java:1817) at org.apache.catalin a.loader.WebappC lassLo ader.findCla ss(WebappC lassLo ader.java:872).........
Spring2.0 AOP Liberar ies里的a sm2.2.3.jar和Hib erate中的生成代理用的asm.jar冲突,后来把asm2.2.3.jar删了才好使
或者
ng.NoClass DefFou ndErro r: org/objectw eb/asm/CodeVis itor
ng.NoClass DefFou ndErro r: org/objectw eb/asm/commons/EmptyVi sitor
ng.NoSuchM ethodE rror: org.objectw eb.asm.ClassVi s itor.visit
ng.NoSuchM ethodE rror:
org.objectw eb.asm.ClassVi sitor.visit(IILjava/lang/String;Ljava/lang/String;[Ljava/lang/String;Lja va/lang/String;)V
这个错误是因为系统需要一个叫“asm.jar”的包,而这个包在Spi ngAop包中和Hib e rnate 包中都有,而且不象话的是这两个包中的类org.objectw eb.asm.ClassVi sitor的方法visi t方法签名竟然不一样,所以解决方法很简单,项目在加HIB ERNATE3能力的时候不加库,直接用Spri ng的AOP的库就可以了。
在使用Spri ng的AOP编程时,会用到这几个l ib:
asm-2.2.2.jar
asm-commons-2.2.2.jar
asm-util-2.2.2.jar
Hiberna te使用如果lib:
asm.jar
asm-attrs.jar
其中asm-2.2.2.jar与asm.jar存在类上的冲突!
使用其中之一或两者都使用,可能会出现如下错误:
ng.NoClass DefFou ndErro r: org/objectw eb/asm/CodeVis itor ng.NoClass DefFou ndErro r:
org/objectw eb/asm/commons/EmptyVi sitor
ng.NoSuchM ethodE rror:
org.objectw eb.asm.ClassVi sitor.visit。
解决办法是:
去掉类路径上的关于Hibe rnate的3个lib
asm.jar
asm-attrs.jar
cglib-2.1.3.jar
保留Sprin g中的以下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.CodeGen eratio nExcep tion:
ng.reflect.Invocati onTargetException-->null
Causedby: ng.reflect.Invocat i onTargetException
Causedby: ng.Securit yExcep tion:
class "com.wuwei.strutser$$Enhance rByCGL IB$$1016ffb f"'s signeri nforma tion does not match signeri nforma tion of other classes in the same package
在….hbm.xml文件中,将class标签的lazy属性改为fa l se(默认为true)
<class name="com.wuwei.strutser" table="user" lazy="false">。
如果有sche ma="dbo" catalog="test"配置信息,请将其删除
(15) 错误提示:ng.OutOfMe moryEr ror:Java heap space的解决方法
1、设置环境变量
set JAVA_OP TS= -Xms32m-Xmx512m可以根据自己机器的内存进行更改,但本人测试这种方法并没有解决问题。
可能是还有哪里需要设置。
2、java -Xms32m-Xmx800m classNa me
就是在执行JA V A类文件时加上这个参数,其中class Name是需要执行的确类名。
(包括包名)这个解决问题了。
而且执行的速度比没有设置的时候快很多。
如果在测试的时候可能会用E clispe这时候就需要在Eclips e ->run -argumen ts 中的VM argumen ts
(16) tomcat5的commo n/lib目录下j ar包和WE B/lib下jar包冲突问题
启动tomca t5,基本正常,打开普通的JSP也正常,但打开与str uts相关的jsp报错如下:Java x.Servlet.Servlet Except ion:
javax.servlet.jsp.PageCon text.handleP ageExc eption(Ljava/lang/Throwab le;)V
org.apache.jASPer.servlet.JspServ let.service(JspServ let.java:256)
javax.servlet.http.HttpSer vlet.service(HttpSer vlet.java:868)
在tomcat/common/lib/中也放入了J2EE.jar等包,去common/lib中处不必要的包后,保证tomca t/common/lib/和WEB-INF/lib这两个目录下的jar没有重复的,问题解决。
原来,tomcat启动后先将to mcat/common/lib目录下的jar包全部读入内存,如果webap ps 目录里的应用程序中W EB-INF/lib目录下有相同的包,将无法加载,估计不同版本的包之间也会造成类似问题。
因此建议尽量不要把jar包放入tomc at/common/lib目录下,应该放入WEB-INF/lib目录下。
(17) ng.NoClass DefFou ndErro r: net/sf/hiberna te/Session
后来发现,原来是Hibe rnateD aoSupp ort类im port引用的版本问题,应该与系统中使用的Hibe rnate框架的版本对应。
在此就是
org.springf ramewo rk.orm.hiberna te3.support.Hiberna teDaoS upport而不是org.springf ramewo rk
(18)错误: ng.NullPoi nterEx ceptio n
Standar dWrapp erValv e[action]: Servlet.service() for servlet actionthrew excepti on
javax.servlet.jsp.JspExce ption: Cannotretriev e mapping for action/settlem entTyp eManag e
或者: type Statusreport
message Servlet actionis not availab le
descrip tion The request ed resourc e (Servlet actionis not availab le) is not availab le.
原因:发现dao 实例、 manage实例等需要注入的东西没有被注入
解决:这个时候,你应该查看日志文件;默认是应用服务器的log 文件,比如Tomcat就是 [Tomcat安装目录]/logs ;你会发现提示你:可能是:
org.springf ramewo rk.beans.factory.BeanCre ationE xcepti on: Error creatin g bean with name 'sf' defined in Servlet Contex t resourc e [/WEB-INF/applica tionCo ntext.xml]: Initial izatio n of bean failed;nestedexcepti on is org.hiberna te.Hiberna teExce ption:could not configu re from URL: file:src/hiberna te.cfg.xml
org.hiberna te.Hiberna teExce ption: could not configu re from URL: file:src/hiberna te.cfg.xml ……………………….
Causedby: java.io.FileNot FoundE xcepti on: src\hiberna te.cfg.xml
可能是:
org.springf ramewo rk.beans.factory.BeanCre ationE xcepti on: Error creatin g bean with name
'session Factor y' defined in Servlet Contex t resourc e [/WEB-INF/applica tionCo ntext.xml]: Initial izatio n of bean failed;nestedexcepti on is org.hiberna te.Mapping Except ion: Resourc e: com/mcc/coupon/model/UserRol e.hbm.xml not found
org.hiberna te.Mapping Except ion: Resourc e: com/mcc/coupon/model/UserRol e.hbm.xml not found
然后你就知道原因是因为配置文件的解析出了错误,这个通过Web 页面是看不出来的。
更多的是持久化映射文件出的错误;导致了没有被解析;当然你需要的功能就无法使用了。
(19) 错误:Standar dWrapp erValv e[jsp]: Servlet.service() for servlet jsp threw excepti on
ng.ClassNo tFound Except ion: org.apache.struts.taglib.bean.CookieT ei
界面错误具体描述:
org.apache.jasper.JasperE xcepti on: Failedto load or instant iate TagExtr aInfoclass: org.apache.struts.taglib.bean.CookieT ei
原因与解决:
<方案一>你的”tml:”开头的标签没有放在一个中
<方案二>重新启动你的应用服务器,自动就没有这个问题了
(20) 错误:java.sql.SQLException: Field 'userId' doesn't have a default value
原因:把配置文件的主键改为<generat or class="assigne d"/> 可以进行自定义主键值,因为我在设主键时没有设成自动增长的,要求填默认值是受了配置文件里<generat or class="native"/>的影响了。
(21)错误:org.hiberna te.ObjectD eleted Except ion: deleted objectwould be re-saved by cascade (removedeleted objectfrom associa tions)
原因与解决:
方法1 删除Set方的cascad e
方法2 解决关联关系后,再删除
方法3 在many-to-one方增加c ascade但值不能是no ne
最后一招:
检查一下has hCodeequals是否使用了id作为唯一标示的选项了;我用uuid.hex时是没有问题的;但是用了nat ive,就不行了,怎么办?删除啊!
这个错误可以参见我的blo g文章:
http://www.blogjav /crazycy/archive/2006/06/24/54939.html
(22)错误:excepti on javax.servlet.Servlet Except ion: BeanUti ls.populat root cause
ng.Illegal Argume ntExce ption:Cannotinvoke***Form.set*** - argumen t type mismatc h
原因:这个问题很奇怪的说,为什么说奇怪呢?主要针对For m是日期型的来说的;因为我做过N多系统Form中都是用ja va.util.Date,都是没有问题的。
解决:
第一:你把Date换成Strin g;在Action中进行转换;当然转换要借助于Simpl eDateF ormate 方法喽
第二:记得在form中增加enc type="multipa rt/form-data"
(23)问题:用Tomcat5.5.12,发现原来很好用的系统不能用了,反复测试发现页面中不能包含taglib,否则会出现以下提示:
HTTP Status500 -type Excepti on report
Message
descrip tion The serverencount ered an interna l error () that prevent ed it from fulfill ing this request. excepti on
org.apache.jasper.JasperE xcepti on: /index.jsp(1,1) Unableto read TLD "META-INF/tlds/struts-bean.tld" from JAR file "file:*****/WEB-INF/lib/struts.jar":
原因:更新了工程用的lib文件夹下的jar,发布时也发布了servle t.jar和jsp-api.jar。
解决:把jsp-api.jar删除就解决这个问题了。
(24)问题:Tomcat5.0.20中差错可以通过[Tomcat安装目录]/logs下的l ocalho st_log.2006-07-14.txt类似的文件看具体的错误日志,但是在5.5中就找不到了
原因与解决:我把[Tomcat安装目录]/bin下的to mcat5w.exe的log ging标签捣鼓了一会,然后重起就有了。
原因具体说不准,用非安装版也有这个问题。
(25) HTTP Status404 - Servlet actionis not availab le
type Statusreport
message Servlet actionis not availab le
descrip tion The request ed resourc e (Servlet actionis not availab le) is not availab le.
这个是因为在s truts-config中,action执行交给了sp ring,
<plug-in classNa me="org.springf ramewo rk.web.struts.Context Loader PlugIn"> <set-propert y propert y="context Config Locati on" value="/WEB-INF/applica tionCo ntext.xml" />
</plug-in>
这需要org.springf ramewo rk.web这个包,我没有导入,action跳转自然出错。
解决方法就是导入sprin g-web.jar这个包。
(26):javax.servlet.Servlet Except ion: Error creatin g bean with name '/login' defined in Servlet Contex t resourc e [/WEB-INF/applica tionCo ntext.xml]: Cannotresolve referen ce to bean 'UserDAO' while setting bean propert y 'userDAO'; nestedexcepti on is
org.springf ramewo rk.beans.factory.NoSuchB eanDef initio nExcep tion: No bean named 'UserDAO' is defined
org.apache.struts.action.Request Proces sor.process Except ion(Request Proces sor.java:523)
org.apache.struts.action.Request Proces sor.process Action Perfor m(Request Proces sor.java:421)
org.apache.struts.action.Request Proces sor.process(Request Proces sor.java:224)
org.apache.struts.action.ActionS ervlet.process(ActionS ervlet.java:1194)
org.apache.struts.action.ActionS ervlet.doPost(ActionS ervlet.java:432)
javax.servlet.http.HttpSer vlet.service(HttpSer vlet.java:763)
javax.servlet.http.HttpSer vlet.service(HttpSer vlet.java:856)
com.siyue.struts.filter.SetChar acterE ncodin gFilte r.doFilte r(SetChar acterE ncodin gFilte r.java:167)
这主要是app licati onCont ext.xml文件中没有声明Use rDao这个Bean,加入以下就可以解决。
<bean name="UserDAO" class="com.siyue.hiberna erDAO" singlet on="false"> </bean>
但是,这就出现了下面的问题:
javax.servlet.Servlet Except ion: Error creatin g bean with name '/login' defined in Servlet Contex t resourc e [/WEB-INF/applica tionCo ntext.xml]: Cannotresolve referen ce to bean 'UserDAO' while setting bean propert y 'userDAO'; nestedexcepti on is
org.springf ramewo rk.beans.factory.BeanCre ationE xcepti on: Error creatin g bean with name
'UserDAO' defined in Servlet Contex t resourc e [/WEB-INF/applica tionCo ntext.xml]: Initial izatio n of bean failed;nestedexcepti on is ng.Illegal Argume ntExce ption:session Factor y or hiberna teTemp late is require d
org.apache.struts.action.Request Proces sor.process Except ion(Request Proces sor.java:523)
org.apache.struts.action.Request Proces sor.process Action Perfor m(Request Proces sor.java:421)
org.apache.struts.action.Request Proces sor.process(Request Proces sor.java:224)
org.apache.struts.action.ActionS ervlet.process(ActionS ervlet.java:1194)
org.apache.struts.action.ActionS ervlet.doPost(ActionS ervlet.java:432)
javax.servlet.http.HttpSer vlet.service(HttpSer vlet.java:763)
javax.servlet.http.HttpSer vlet.service(HttpSer vlet.java:856)
com.siyue.struts.filter.SetChar acterE ncodin gFilte r.doFilte r(SetChar acterE ncodin gFilte r.java:167) 这是因为声明中没有注入Se ssionFactory所致,将上面声明的U serDao改成这样就解决了: <bean name="UserDAO" class="com.siyue.hiberna erDAO" singlet on="false">
<propert y name="session Factor y" ref ="session Factor y" />
</propert y>
</bean>
(27)org.hiberna te.id.Identif ierGen eratio nExcep tion: ids for this class must be manuall y assigne d beforecalling save():
原因是ID在数据库中应该是自增长列,而在User.hbm.xml中却没有定义成自增长列,在插入数据库时,也就是Save()方法时,出现错误。
这样改:
<id name="id" type="ng.Integer">
<columnname="ID" />
<generat or class="increme nt" />
</id>
(28) ng.ClassNo tFound Except ion: org.apache.commons.dbcp.BasicDa taSour ce的解决方法
只要把comm ons-pool.jar、commons-dbcp-1.2.2.jar和com mons-collect ions-3.2.jar三个ja r包加入cl asspat h中就没问题拉!
(29) 出现错误:
Causedby: org.apache.commons.dbcp.SQLNest edExce ption: CannotcreateJDBC driverof class 'com.microso ft.sqlserv er.jdbc.SQLServ erDriv er' for connect URL '
jdbc:sqlserv er://localho st;Databas eName=exam
.............
Causedby: java.sql.SQLExce ption: No suitabl e driver
at java.sql.DriverM anager.getDriv er(DriverM anager.java:264)
at org.apache.commons.dbcp.BasicDa taSour ce.createD ataSou rce(BasicDa taSour ce.java:773) ... 38 more
首先要保证项目中导入了sqljdbc.jar,再有就是注意配置文件导入的类
<bean id="dataSou rce"
class="org.springf ramewo rk.jdbc.datasou rce.DriverM anager DataSo urce">
(30)identif ier of an instanc e of my.MyObjec t altered from N to N
这个异常的产生主要是VO中的类中的属性的类型和你影射文件中属性的类型不能一一对应。
比如:ID的属性在类中使用的LO NG,但是在配置文件描述却是In teger.结果就是上面的异常了!
(31) org.springf ramewo rk.beans.factory.BeanCre ationE xcepti on: Error creatin g bean with name 'useract ion' defined in Servlet Contex t resourc e [/WEB-INF/applica tionCo ntext.xml]: Error setting propert y values;nestedexcepti on is org.springf ramewo rk.beans.NotWrit ablePr operty Except ion: Invalid propert y 'user_se rver' of bean class [com.bids.action.UserAct ion]: Bean propert y 'user_se rver' is not writabl e or has an invalid settermethod. Does the paramet er type of the settermatch the returntype of the getter?
Causedby: org.springf ramewo rk.beans.NotWrit ablePr operty Except ion: Invalid propert y 'user_se rver' of bean class [com.bids.action.UserAct ion]: Bean propert y 'user_se rver' is not writabl e or has an invalid settermethod. Does the paramet er type of the settermatch the returntype of the getter?
at org.springf ramewo rk.beans.BeanWra pperIm pl.setProp ertyVa lue(BeanWra pperIm pl.java:793) at org.springf ramewo rk.beans.BeanWra pperIm pl.setProp ertyVa lue(BeanWra pperIm pl.java:645) .........
2009-1-21 12:09:18 org.apache.catalin a.core.Standar dWrapp erValv e invoke
严重: Servlet.service() for servlet jsp threw excepti on
ng.NullPoi nterEx ceptio n
原因是"user_se rver""user_po jo"没有get和s et方法。
(32) 地址栏中:http://localho st:8088/sshtest/user.do?act=registe r
报错:HTTP Status404 - Servlet actionis not availab le
原因是:struts-config.xml配置文件中的请求处理器类出错了(找不到类路径)
<control ler process orClas s="com.xj.request proces sor.MyProce ssor"></control ler>
解决办法:
<control ler process orClas s="org.springf ramewo rk.web.struts.Delegat ingReq uestPr ocesso r">
(33)报错 :javax.servlet.Servlet Except ion:
Cannotfind ActionM apping s or ActionF ormBea ns collect ion
原因: 工程里面的st ruts包.有损坏或某些s truts包没有存在.
解决办法:重新创建一个工程,并且导入str uts,然后将导入的s truts包copy到目前的工厂的WEB-INf/lib目录,重新部署,重新启动服务,就ok了
(34) 报错:ng.Long cannotbe cast to ng.Integer
Long 无法转化成In teger类型. 这个异常经常出现在hi nberna te分页查询的时候.
例如:
注: super.pageQue ry(hql,null,null,null);调用了一个父类的一个封装方法.查询时候使用
List list = this.getHibe rnateT emplat e().execute Find(new Hiberna teCall back(){});
/**
* 查询所有用户记录总数
*/
publicInteger getUser sCount() {
Stringhql = "selectcount(*) from Users";
List list = super.pageQue ry(hql, null, null, null);
return(Integer) list.get(0);
}
原因:
这里在Hibe rnate2.0之前版本li st.get(0)返回的是Int eger类型.
但是在Hibe rnate3.0以后版本li st.get(0)返回的是Lon g类型.
所以在这里不可以由Long型强转成In teger类型.
解决办法:
publicInteger getUser sCount() {
Stringhql = "selectcount(*) from Users";
List list = super.pageQue ry(hql, null, null, null);
Numbernum = (Number) list.get(0);
returnnum.intValu e();
}
注:ng.Number是Intege r,Long的父类.
(35) 报错 : Servlet Actionis not availab le 因为Sprin g配置文件的位置放在WEB-INF下,要在WEB.XML文件中作为Servl et步署,而不能用插件方式连接
(1). 将struts-config.xml文件中的
<plug-in
classNa me="org.springf ramewo rk.web.struts.Context Loader PlugIn">
<set-propert y propert y="context Config Locati on"
value="/WEB-INF/applica tionCo ntext.xml" />
</plug-in> 去掉
(2).然后在web.xml文件中加上这段代码就可以了.
<context-param>
<param-name>context Config Locati on</param-name>
<param-value>/WEB-INF/applica tionCo ntext.xml</param-value>
</context-param>
<servlet>
<servlet-name>context</servlet-name>
<servlet-class>
org.springf ramewo rk.web.context.Context Loader Servle t
</servlet-class>
<load-on-startup>1</load-on-startup>
</servlet>
(36) 报错:'session Factor y' or 'hiberna teTemp late' is require d
原因: 在dao操作类中需要注入H iberna teTemp late来创建sessi onFact ory. 或者直接注入s ession Factor y.
错误的写法:
<bean id="depsdao" class="com.xj.dao.impl.DepsDao"
lazy-init="true">
</bean>
<bean id="userdao" class="ersDa o"
lazy-init="true">
</bean>
解决办法: 要将这2个对象中的某一个注入到dao中.
第一种方法:
<bean id="depsdao" class="com.xj.dao.impl.DepsDao"
lazy-init="true">
<propert y name="session Factor y" ref ="session Factor y" />
</propert y>
</bean>
第二种方法:
<bean id="hiberna teTemp late"
class="org.springf ramewo rk.orm.hiberna te3.Hiberna teTemp late">
<propert y name="session Factor y" ref="session Factor y" / >
</bean>
<bean id="depsdao" class="com.xj.dao.impl.DepsDao"
lazy-init="true">
<propert y name="hiberna teTemp late">
<ref bean="hiberna teTemp late" />
</propert y>
</bean>
(37) 报错: ng.Illegal StateE xcepti on: No WebAppl icatio nConte xt found:
no Context Loader Listen er registe red?
原因: web.xml文件中的配置写错了[注:对与插件方式不存在这个问题 ] 解决办法:在web.xml中加上
<context-param>
<param-name> context Config Locati on </param-name>
<param-value>
/WEB-INF/classes/applica tionCo ntext.xml
</param-value>
</context-param>
<servlet>
<servlet-name> context </servlet-name>
<servlet-class>
org.springf ramewo rk.web.context.Context Loader Servle t
</servlet-class>
<load-on-startup> 1 </load-on-startup>
</servlet>
(38) 报错:No bean named 'session Factor y' is defined
错误可能原因1:在web.xml中加载a pplica tionCo ntext.xml文件的时候没有加载成功,看你的路径是否正确,这个配置错误,服务器启动的时候不会报错
错误可能原因2:没有删除asm-2.2.3.jar文件.一定要直接从磁盘目录删除.然后刷新工程,重新部署重启服务.
(39) 报错:session Factor y或者hib ernate Templa te找不到,有的时候,我们明明就在d ao中注入了sessio nFacto ry或hib ernate,但是还是总是报错,说sessio nFacto ry或者hi bernat eTempl ate 找不到
下面这种情况会引发这种情况:
在struts中的form bean中的reset方法,往往我们用来初始化界面的一些显示值.
如一个注册,可能在这里先查询数据库,找到所有的部门信息,然后绑定在界面的下拉框中.所以可能会在r eset方法中调用业务层方法.(也有可能请求页面之前,先经过一个se rvlet或jsp,在servle t里面调用业务层方法)
如果你在for mbean中是这样写会报上面的错误:
Applica tionCo ntextap = new FileSys temXml Applic ationC ontext(
new String[] {
"E:\\MyWorkP lace\\sshtest\\WebRoot\\WEB-INF\\applica tionCo ntext.xml",
"E:\\MyWorkP lace\\sshtest\\WebRoot\\WEB-INF\\operato rbeans.xml",
"E:\\MyWorkP lace\\sshtest\\WebRoot\\WEB-INF\\actionb eans.xml" });
IUserSe rviceus = (IUserSe rvice) ap.getBean("userser vice");
然后用us 直接调用方法.
原因: 在这里Appl icatio nConte xt ap = new FileSys temXml Applic ationC ontext(
new String[] {});
启动的实际上是另外一个sp ring容器,而不是刚刚启动服务的时候创建的那个sp ring容器.
解决办法:
在reset方法中:
Servlet Contex t context = servlet.getServ letCon text();
Applica tionCo ntextapp = (Applica tionCo ntext) context.getAttr ibute
(WebAppl icatio nConte xt.ROOT_WE B_APPL ICATIO N_CONT EXT_AT TRIBUT E);
IDeptSe rviceds = (IDeptSe rvice) app.getBean("deptser vice");
this.depList = ds.selectA llDeps();
注:servlet是strut s框架中间的一个对象,保存了web容器的很多信息
那么之前是怎样设置进去的呢?
// context.setAttr ibute(
WebAppl icatio nConte xt.ROOT_WE B_APPL ICATIO N_CONT EXT_AT TRIBUT E,启动的时候创建的那个spr ing器);
(40) 报错: org.apache.jasper.JasperE xcepti on: $Proxy3cannotbe cast to
com.xj.service.impl.RoleSer vice
ng.ClassCa stExce ption: $Proxy3cannotbe cast to com.xj.service.impl.RoleSer vice
原因:很明显又是一个代理时候,强转错误:
Servlet Contex t context = servlet.getServ letCon text();
Applica tionCo ntextapp = (Applica tionCo ntext) context.getAttr ibute
(WebAppl icatio nConte xt.ROOT_WE B_APPL ICATIO N_CONT EXT_AT TRIBUT E); IDeptSe rviceds = (DeptSer vice) app.getBean("deptser vice");
this.depList = ds.selectA llDeps();
就是这段示例代码中的 IDeptSe rviceds = (DeptSer vice) app.getBean ("deptser vice")出错了不能直接强转成接口的实现类,一定要转成接口.
IDeptSe rviceds = (IDeptSe rvice) app.getBean("deptser vice");
(41) org.hiberna te.id.IdentifierGen eratio nExcep tion: ids for this class must be manuall y assigne d before calling save():
原因:<id>元素配置不正确,<id>元素缺少其子元素<generat or></generat or>的配置。
解决方法:<id>元素映射了相应数据库表的主键字段,对其子元素<generat or class="">,其中class的取值可以为i ncrem ent、identit y、sequence、hilo、native......等,一般取其值为n a tive。
(42) ng.Illegal Argume ntExce ption: id to load is require d for loading
方案:Users user=(Users)this.getHibe rnateT emplat e().get(Users.class,id);如果以用户名为参数不能用此方法
(43) org.springframewo rk.dao.Invalid DataAccessRe sourceU sageE xcepti on:
could not execute query; nestedexcepti on is org.hiberna te.excepti on.SQLGram marExcepti on: could not execute query
方案:sql语句有错误
(44) 严重: Excepti on sending context initial ized event to listene r instance of class com.sun.faces.config.Configu reList ener
javax.faces.FacesEx ceptio n: Can't parse configu ration
file:jar:file:/E:/工具/apache-tomcat-6.0.9/apache-tomcat-6.0.9/webapps/jsf02/
WEB-INF/lib/jsf-impl.jar!/com/sun/faces/standard-html-renderk i t.xml
方案:把tomcat的安装文件安装到英文目录下
(45) springMVC+hiberna te
Excepti on in thread"main" org.springframewo rk.dao.Invalid DataAccessRe sourceU sageE xception: Could not execute JDBC batch update; nestedexcepti on is
org.hiberna te.excepti on.SQLGram marException: Could not execute JDBC batch update
Causedby: org.hiberna te.excepti on.SQLGram marException:Could not execute JDBC batch update
org.springframewo rk.beans.factory.CannotL oadBeanClassExcepti on: Error loading class [org.springframewo rk.transaction.interce ptor.TransactionProxyFac toryBe an] for bean with name 'userServi ce' defined in Servlet Contex t resourc e [/WEB-INF/applica tionCo ntext.xml]: probl em with class file or depende nt class; nestedexcepti on is ng.NoClassDefFou ndErro r: org/springframewo rk/aop/framewo rk/AbstractSingl etonProxyFactoryBean Causedby:
ng.NoClassDefFou ndErro r: org/springframewo rk/aop/framewo rk/AbstractSingl etonProxyFactoryBe an
方案:添加spring 2.0 aop librari es
(46)org.apache.j asper.JasperE xcepti on: Unableto compile class for JSP:
或org.apache.j asper.JasperE xcepti on: Unableto compile class for JSP
方案:jsp网页中的j ava代码有问题
或:jsp页面中的j ava代码括号不对称!
(47)错误:Excepti on in thread"main" org.springframewo rk.beans.factory.BeanCre ationE xcepti on: Error creatin g bean with name 'Company Contro ller' defined in class path resourc e [com/company/test/company-config.xml]: Error setting propert y values; nestedexcepti on is org.springframework.beans.NotWrit ableProperty Excepti on: Invalid propert y 'methodN ameResolver' of bean class [pany.action.Company Contro l ler]: Bean propert y 'methodNameResolver' i s not writabl e or has an invalid setter method. Does the paramet er type of the setter match the returntype of the getter?
Causedby: org.springframewo rk.beans.NotWrit ableProperty Excepti on: Invalid propert y 'methodNameResolver'of bean class [pany.action.Company Contro ller]: Bean propert y 'methodNameResolver'is not writabl e or has an invalid setter method. Does the paramet er type of the setter match the returntype of the getter?
控制器没继承M u l tiActionCo ntroll er
(48)提示:Excepti on in thread"main" org.springframewo rk.beans.factory.BeanCre ationE xcepti on: Error creatin g bean with name 'turDiffServic e' defined in class path resource[com/expert/test/expert-config.xml]: Error setting propert y values;nestedexcepti on is org.springframework.beans.NotWrit ableProperty Excepti on: Invalid propert y 'turDiffi cultD ao' of bean class [com.expert.operati on.impl.TurDiff SerImpl]: Bean propert y 'turDiffi cultD ao' is not writabl e or has an invalid setter method. Did you mean 'truDiffi cultD ao'?
Causedby: org.springframewo rk.beans.NotWrit ableProperty Excepti on: Invalid propert y 'turDif。