现在的位置: 首页 > 综合 > 正文

类之间相互调用引起的tomcat服务器无法启动原因分析

2017年12月03日 ⁄ 综合 ⁄ 共 510字 ⁄ 字号 评论关闭

Tomcat无法启动:

日志报错:Caused by: java.lang.StackOverflowError

经查发现是因为有两个类存在相互调用的情况,其中一个类在spring中做了配置,而且这两个类的调用都是现在另外的类中将其作为该类的实例化属性来调用。

例如:

public class XeditServiceDao extends BaseDao
{
   private XeditXmlManager xxm = new XeditXmlManager();
}

public class XeditXmlManager {
   private XeditServiceDao xsDao = new XeditServiceDao();
}

XeditServiceDao 类在spring中做了配置,但是当我们启动tomcat服务器时,就会加载XeditServiceDao 类的相关属性XeditXmlManager,

而XeditXmlManager 中又以XeditServiceDao 为属性,造成了死循环,因此造成堆溢出错误java.lang.StackOverflowError 。

同理,如果其他web服务器出现此类情况,也不妨查一下此类原因。

抱歉!评论已关闭.