java中出现如下错误解决方法:
2008-06-03 09:34
459 查看
serialVersionUID作用:
序列化时为了保持版本的兼容性,即在版本升级时反序列化仍保持对象的唯一性。
你可以随便写一个,在Eclipse中它替你生成一个,有两种生成方式:
一个是默认的1L,比如:private static final long serialVersionUID = 1L;
一个是根据类名、接口名、成员方法及属性等来生成一个64位的哈希字段,比如:private static final long serialVersionUID = -8940196742313994740L;之类的。
当你一个类实现了Serializable接口,如果没有定义serialVersionUID,Eclipse会提供这个提示功能告诉你去定义之。
在Eclipse中点击类中warning的图标一下,Eclipse就会自动给定两种生成的方式,如上面所述。如果不想定义它,在Eclipse的设置中也可以把它关掉的,设置如下:
Window ==> Preferences ==> Java ==> Compiler ==> Error/Warnings ==> Potential programming problems
将Serializable class without serialVersionUID的warning改成ignore即可。
如果你没有考虑到兼容性问题时,就把它关掉,不过有这个功能是好的,只要任何类别实现了Serializable这个接口的话,如果没有加入serialVersionUID,Eclipse都会给你warning提示,这个serialVersionUID为了让该类别Serializable向后兼容。
如果你的类Serialized存到硬盘上面后,可是后来你却更改了类别的field(增加或减少或改名),当你Deserialize时,就会出现Exception的,这样就会造成不兼容性的问题。
但当serialVersionUID相同时,它就会将不一样的field以type的预设值Deserialize,这个可以避开不兼容性的问题。
序列化时为了保持版本的兼容性,即在版本升级时反序列化仍保持对象的唯一性。
你可以随便写一个,在Eclipse中它替你生成一个,有两种生成方式:
一个是默认的1L,比如:private static final long serialVersionUID = 1L;
一个是根据类名、接口名、成员方法及属性等来生成一个64位的哈希字段,比如:private static final long serialVersionUID = -8940196742313994740L;之类的。
当你一个类实现了Serializable接口,如果没有定义serialVersionUID,Eclipse会提供这个提示功能告诉你去定义之。
在Eclipse中点击类中warning的图标一下,Eclipse就会自动给定两种生成的方式,如上面所述。如果不想定义它,在Eclipse的设置中也可以把它关掉的,设置如下:
Window ==> Preferences ==> Java ==> Compiler ==> Error/Warnings ==> Potential programming problems
将Serializable class without serialVersionUID的warning改成ignore即可。
如果你没有考虑到兼容性问题时,就把它关掉,不过有这个功能是好的,只要任何类别实现了Serializable这个接口的话,如果没有加入serialVersionUID,Eclipse都会给你warning提示,这个serialVersionUID为了让该类别Serializable向后兼容。
如果你的类Serialized存到硬盘上面后,可是后来你却更改了类别的field(增加或减少或改名),当你Deserialize时,就会出现Exception的,这样就会造成不兼容性的问题。
但当serialVersionUID相同时,它就会将不一样的field以type的预设值Deserialize,这个可以避开不兼容性的问题。
相关文章推荐
- 访问tomcat出现java.lang.IllegalStateException No output folder错误解决方法
- 今天用PHP解析xml时出现如下错误:php Fatal error: Class 'DOMDocument' not found。 环境:CentOS 5.5; PHP 5.3.8 解决方法:
- 创建物理卷出现如下错误 Can't initialize physical volume的解决方法
- maven打包时出现【java source 1.3中不支持泛型 请使用 -source 5 或更高版本以启用泛型】错误时的解决方法
- tomcat运行时候出现java.net.BindException: Address already in use: JVM_Bind错误解决方法
- 编译boost程序出现如下错误fatal error LNK1104: cannot open file 'libboost_system-vc100-mt-gd-1_54.lib'的解决方法
- Java中出现“错误: 编码GBK的不可映射字符”的解决方法
- maven执行打包命令(mvn package)是出现Java heap space错误的解决方法(windows环境)
- 使用Eclipse开发Android出现java.lang.NullPointerException错误的解决方法
- mac 上运行cassandra出现的java.net.MalformedURLException: Local host name unknown: java.net.UnknownHostException: : : unknown error错误解决方法
- Rational Rose出现java.lang.ClassNotFoundException错误的解决方法(转帖)
- Java文件中出现这样的提示错误与解决方法:Cannot return from outside a function or method?
- java代码在编译时出现错误: 编码GBK的不可映射字符 的解决方法之一
- 访问tomcat出现java.lang.IllegalStateException: No output folder错误解决方法
- Intellij idea 出现错误 error:java: 无效的源发行版: 8解决方法
- 阿里云安装mysql初始化的时候出现如下错误,以及解决方法
- 启动Web项目时控制台出现如下错误解决方法
- 高并发请求服务器时,经常出现如下异常:java.lang.OutOfMemoryError: unable to create new native thread的解决方法
- 重新安装java出现错误的解决方法
- 安卓开发过程中,常因添加第三方jar包或添加依赖是出现如下错误,以下是本人一点解决方法总结(finished with non-zero exit value 2 )