Exception异常
1、Hibernate 异常org.hibernate.LazyInitializationException: could not initialize proxy - no Session
这是一个lazy使用后的Exception,使用迟时加载,在session(hibernate里的session),关闭后使用该对象的未加载变量,也就是说session已经关闭,没有保存到内存中,然后你使用了,导致该异常。
解决方法:
方法1.用openSessionInView
方法2.把这个类的延迟加载禁掉
例:
<!-- lazy="false" 取消延迟加载,解决异常LazyInitializationException:could not initialize proxy - no Session--> <many-to-one name="trade_id" class="com.cr.trade.model.Trade" column="trade_id" lazy="false"> </many-to-one>
-------------------------------------------------------------------------------------------------------------------------------------
2、Hibernate 异常 java.lang.NoSuchMethodError: antlr.collections.AST.getLine()I
原因:项目里有这两个jar包产生了冲突所致:antlr-2.7.6.jar和anltr-2.7.2.jar。
解决:将anltr-2.7.2.jar包删除即可。之所以在main方法里能够顺利执行是因为:antlr.jar包是Struts2所依赖的。不通过网页传参,就不需要它,所以能够顺利执行。
-----------------------------------------------------------------------------------------------------------------------
3、启动tomcat 报 严重:Null component Catalina:type=JspMonitor,name=jsp,WebModule=//.......
原因:JDK版本不匹配
解决:更换JDK版本
---------------------------------------------------------------------------------------------------------------------------\
4、query.List()的异常
原因:使用hql每次执行到query.List()方法时停下程序,使用Debug跟踪到List list = query.list(); //卡死.程序僵死!
解决:关闭session,在调用其它方法之后或是使用自身的方法都要关闭session.
session.close();
----------------------------------------------------------------------------------------------------------------------------
5、DWR异常 org.directwebremoting.dwrp.Batch异常
dwr遇到这种错误:
org.directwebremoting.util.CommonsLoggingOutputerror
严重:ArequesthasbeendeniedasapotentialCSRFattack.
在参照dwr的官方网站时,如果在后台出现如下的提示信息:A request has been denied as a potential CSRF attack
则,需要在web.xml中的如下配置修改一下
<servlet>
<servlet-name>dwr-invoker</servlet-name>
<servlet-class>org.directwebremoting.servlet.DwrServlet</servlet-class>
<init-param>
<param-name>debug</param-name>
<param-value>true</param-value>
</init-param>
</servlet>
<servlet-mapping>
<servlet-name>dwr-invoker</servlet-name>
<url-pattern>/dwr/*</url-pattern>
修改为
<servlet>
<servlet-name>dwr-invoker</servlet-name>
<servlet-class>org.directwebremoting.servlet.DwrServlet</servlet-class>
<init-param>
<param-name>debug</param-name>
<param-value>true</param-value>
</init-param>
<init-param> <!-- 添加 加入了跨域调用功能-->
<param-name>crossDomainSessionSecurity</param-name>
<param-value>false</param-value>
</init-param>
</servlet>
<servlet-mapping>
<servlet-name>dwr-invoker</servlet-name>
<url-pattern>/dwr/*</url-pattern>
</servlet-mapping>
</servlet-mapping>
即加入了跨域调用功能
此处servlet-class值为uk.ltd.getahead.dwr.DWRServlet (如果dwr版本是1.0版本的,则必须用这个class)
也可以是org.directwebremoting.servlet.DwrServlet
如果确定java类的方法被调用了,但是页面还是出现了如下的报错: 例外被抛出且未被接住
-------------------------------------------------------------------------------------------------------------------------------------