java.io.NotSerializableException:这是啥异常啊??????
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了java.io.NotSerializableException:这是啥异常啊??????相关的知识,希望对你有一定的参考价值。
java.io.NotSerializableException: conn.GroupInfo
at java.io.ObjectOutputStream.writeObject0(Unknown Source)
收集完成,是否选择继续增加小组信息(Y/N)?
at java.io.ObjectOutputStream.writeArray(Unknown Source)
at java.io.ObjectOutputStream.writeObject0(Unknown Source)
at java.io.ObjectOutputStream.writeObject(Unknown Source)
at conn.GroupManage.addMessage(GroupManage.java:203)
at conn.GroupManage.ManageMenu(GroupManage.java:62)
at conn.MainMenu.mainMenu(MainMenu.java:55)
at conn.MainMenu.enterMenu(MainMenu.java:101)
at conn.MainMenu.main(MainMenu.java:30)
对象输出流的对象所对应的类还没有实现Serializable接口。调用ObjectOutputStream输出的对象必须实现这个接口,创建的pojo类未实现Serializable接口,启动服务器会报此异常,但是貌似对代码功能没影响,或者说暂时未发现有什么影响。要解决此异常,可通过实现该接口解决。
1,异常产生原因:
在整个推的项目中,消息是一个Message类,Message必须转换为字节传输,因此在Message类中实现了Serializable接口,在服务器中将Message编码传输到客户端中解码,就是这个环节发生了错误,这是因为服务端的Message类和客户端的Message类的包路径不一样,导致编码和解码不一致,自然会报异常!
2,异常解决
1序列化的类最好加上serialVersionUID,免java.io.InvalidClassException,不同的JVM对serialVersionUID的计算方法可能不一样,就算类的定义和序列化后的对象是一致的,也可能从JVM-A里序列化后的对象到达JVM-B后,JVM-B认为 Class Invalid
2服务端和客户端编解码的类的路径要一致
参考技术A 你的对象输出流的对象所对应的类还没有实现Serializable接口。调用ObjectOutputStream输出的对象必须实现这个接口的本回答被提问者和网友采纳 参考技术B 未序列化异常,你的序列化流所序列化的对象所属的类需要实现Serializable接口腾讯地图关于限制地图的显示范围和缩放级别总结
这个可以在初始化地图的时候使用(有误求指出)
// 先声明地图需要的变量 var searchService,markers = [],lables = [],markerIndex=0,map,circles = []; //初始化地图函数 自定义函数名init function initMap(con) { //定义map变量 调用 qq.maps.Map() 构造函数 获取地图显示容器 //center1为地图的中心点 var center1 = new qq.maps.LatLng(xxx,yyy); //ne表示northeast东北方向的点,sw表示southwest西南方向的点 var ne = new qq.maps.LatLng(31.156408,123.376465); var sw = new qq.maps.LatLng(26.125850,116.499023); map = new qq.maps.Map(document.getElementById(con), { center: center1, //minZoom设置地图最小的缩放级别 //maxZoom设置地图最大的缩放级别 minZoom:8, //boundary用来控制地图显示的范围 //new qq.maps.LatLngBounds(southwest,northeast) boundary:new qq.maps.LatLngBounds(sw,ne); //zoom为地图目前的缩放级别 zoom:9 }); //调用Poi检索类 searchService = new qq.maps.SearchService({ map:map }); ... }
总结:
1.限制地图的显示范围
一般导入地图之后,通过拖拽或者放大,能看到全世界。
如果想控制地图的范围,让地图即使进行拖拽或者缩放,显示的范围也是固定,
那么就要设置boundary值。(northeast:东北方向的点,southwest:西南方向的点)
... boundary:new qq.maps.LatLngBounds(southwest,northeast) ...
2.限制缩放级别
通过设置minZoom(地图最小的缩放级别)和maxZoom(地图最大的缩放级别),
来控制地图的缩放。
以上是关于java.io.NotSerializableException:这是啥异常啊??????的主要内容,如果未能解决你的问题,请参考以下文章