ssh整合问题总结--运行项目时报java.lang.StackOverflowError(堆栈溢出)异常
今天在整合ssh项目中,碰到一个异常,当我提交购物车数据到订单时,浏览器报了一个这样的异常.

当时,我就吓坏了.尼玛,这不是内存溢出了吗?吓得我赶紧去检查了每一个有遍历语句的代码,结果没有发现一个死循环,折腾了两个多小时,最后终于发现了问题,简直让人抓狂,原因竟然是我在实体类,order(订单),orderItem(订单项)中都重写了ToString()方法.请看:
OrderItem.java:
package com.wang.shop.order.entity;
import com.wang.shop.goods.entity.Goods;
public class OrderItem {
private Integer itemId;//订单项Id
private Integer count;//商品数量
private double total;//商品总价格
//订单项中的商品
private Goods goods;
//订单项所属的订单
private Order order;
//get/set方法省略
@Override
public String toString() {
return "OrderItem [itemId=" + itemId + ", count=" + count + ", total="
+ total + ", goods=" + goods + ", order=" + order + "]";
}
}
Order.java:
package com.wang.shop.order.entity; import java.util.Date;
import java.util.HashSet;
import java.util.Set; import com.wang.shop.user.entity.User; /**
* 订单实体
* @author Administrator
*
*/
public class Order { private Integer orderId;//订单Id 主键
private String name;//收货人姓名
private String address;//收货地址
private String tel;//收货人电话
private String postNum;//邮编
private double allTotal;
private Date orderDate;//订单创建日期
//订单所属的用户
private User user;//所有用户 外键 用户Id
//订单里面的多个订单项
private Set<OrderItem> orderItems=new HashSet<OrderItem>();
//get/set方法省略 @Override
public String toString() {
return "Order [orderId=" + orderId + ", name=" + name + ", address="
+ address + ", tel=" + tel + ", postNum=" + postNum
+ ", allTotal=" + allTotal + ", orderDate=" + orderDate
+ ", user=" + user + ", orderItems=" + orderItems + "]";
}
}
请注意!请注意!请注意! 在order类中我有一个set集合的属性,value正好是orderItem,而我又重写了OrderItem的ToString方法,于是乎,当代码执行:
System.out.println("order:"+order);或者System.out.println("orderItem:"+orderItem);
的时候,程序打印Order时,会打印OrderItem,打印OrderItem时,会打印Order,如果反复,无限循环~~~~~最后,啪叽,内存溢出.这个错误有点让人哭笑不得,第一次遇到,真是然我手足无措,立碑如此,切勿再犯.
ssh整合问题总结--运行项目时报java.lang.StackOverflowError(堆栈溢出)异常的更多相关文章
- servlet运行“/*”引起的java.lang.StackOverflowError
<servlet> <servlet-name>login</servlet-name> <servlet-class>com.jd.login.UI. ...
- eclipse运行程序时报java.lang.OutOfMemoryError: Java heap space内存不足问题
System.setProperty("webdriver.firefox.bin", "D:\\Mozilla Firefox\\firefox.exe"); ...
- IntelliJ IDEA的Maven项目在修改时报java.lang.OutOfMemoryError: PermGen space异常
什么也不说了---内存溢出,遇见太多回了,下面是解决方式: 1.在项目设置中新建Maven,然后设置VM: 2. 在pom.xml添加下面2个插件,一个是jrebel的,一个是jetty的 <b ...
- Debug运行项目时报错,connected to the target VM, address: '127.0.0.1:50495', transport: 'socket'
Debug运行项目时报错,无法进入Debug,猜想出错原因可能是未正确关闭IDEA. 解决方法,先直接运行项目,然后停掉项目,再用Debug模式启动,问题解决.
- struts2 下载时报java.lang.IllegalStateException
-----------------------------------------struts2 下载时报java.lang.IllegalStateException---------------- ...
- 【MyEcplise】导入项目报错:Errors running builder 'JavaScript Validator' on project '项目名'. java.lang.ClassCastException
导入项目报错:Errors running builder 'JavaScript Validator' on project '项目名'. java.lang.ClassCastException ...
- Android 运行 gson.toJson(object) 报java.lang.StackOverflowError异常
如以下的代码,运行后报java.lang.StackOverflowError错误: MusicSavedInfo musicSavedInfo=new MusicSavedInfo(currentS ...
- spring boot启动STS 运行报错 java.lang.NoClassDefFoundError: ch/qos/logback/classic/LoggerContext
spring boot启动STS 运行报错 java.lang.NoClassDefFoundError: ch/qos/logback/classic/LoggerContext 学习了: http ...
- eclipse spring boot 项目出现java.lang.ClassCastException 解决方法
问题 eclipse spring boot 项目出现java.lang.ClassCastException 解决方法: 重新生成项目
随机推荐
- 初学者-PHP笔记
PHP介绍 PHP 是 "PHP Hypertext Preprocessor" 的首字母缩略词 PHP 是一种被广泛使用的开源脚本语言 PHP 脚本在服务器上执行 PHP 没有成 ...
- effectiveC++ 内存管理 学习笔记
1.尽量使用初始化列表而不要再构造函数里赋值,初始化顺序和声明的顺序一致,一些类型如const,引用等,必须使用初始化.对于非内部数据类型成员对象应当采用初始化表,以获取更高的效率.example:B ...
- MyEclipse部署到tomcat的问题
开发环境为MyEclipse2014,tomcat版本为8.0,部署tomcat时,出现以下问题: 这时,解决方法如下: 1.右击项目,选择export,弹出框后,在上方输入WAR file,下方会出 ...
- java学习之面向对象(3)
下面来谈谈java编程中的一些语法: 1.什么是对象数组? 对象数组就是数组里的每个元素都是类的对象,赋值时先定义对象,然后将对象直接赋值给数组. 对象数组的声明: 类名[] 对象数组名称 = n ...
- java 获取中文字符的首字母
原理: GB2312编码中的中文是按照拼音排序的 注意: 一些生僻的字无法获得正确的首字母,原因是这些字都是后加入的. import java.io.UnsupportedEncodingExcept ...
- JavaScript多文件下载
对于文件的下载,可以说是一个十分常见的话题,前端的很多项目中都会有这样的需求,比如 highChart 统计图的导出,在线图片编辑中的图片保存,在线代码编辑的代码导出等等.而很多时候,我们只给了一个链 ...
- Windows错误码解析
C或者C++开发肯定经常会遇到各种错误码,由于每个错误码只是一个枚举或者一个整形数值,调试或者输出日志的时候,无法知道这个错误码的具体含义,这时候就需要将此错误码解释出来.对于自己定义的错误码,可以通 ...
- Android属性动画源代码解析(超详细)
本文假定你已经对属性动画有了一定的了解,至少使用过属性动画.下面我们就从属性动画最简单的使用开始. ObjectAnimator .ofInt(target,propName,values[]) .s ...
- Alljoyn瘦客户端库介绍(官方文档翻译)
Alljoyn瘦客户端库介绍(上) 1.简介 本文档对AllJoynTM瘦客户端的核心库文件(AJTCL)进行了详尽的介绍.本文档介绍了系统整体架构,AllJoyn框架结构,并着重于介绍如何将嵌入式设 ...
- DDD领域驱动设计之领域服务
1.DDD领域驱动设计实践篇之如何提取模型 2.DDD领域驱动设计之聚合.实体.值对象 3.DDD领域驱动设计之领域基础设施层 什么是领域服务,DDD书中是说,有些类或者方法,放实体A也不好,放实体B ...