-
Bug
-
Resolution: Fixed
-
P4
-
1.3.0
-
beta2
-
generic
-
generic
-
Verified
Name: ssT124754 Date: 03/28/2001
java version "1.2.1"
Solaris VM (build Solaris_JDK_1.2.1_04c, native threads, sunwjit)
java version "1.3.0"
Java(TM) 2 Runtime Environment, Standard Edition (build Blackdown-1.3.0-FCS)
Java HotSpot(TM) Client VM (build Blackdown-1.3.0-FCS, mixed mode)
If I use other type than long for serialVersionUID, JDK 1.1 ignore this bad
field and compute it. With JDK 1.2 and JDK 1.3, it use this bad field or
throws exception.
class SerialUIDInt
implements java.io.Serializable
{
public static final int serialVersionUID = 0x0001;
public static final byte trash2 = 0x22;
public static final byte trash3 = 0x33;
}
class SerialUIDFloat
implements java.io.Serializable
{
public static final float serialVersionUID = 0.1f;
public static final byte trash2 = 0x22;
public static final byte trash3 = 0x33;
}
class SerialUIDObject
implements java.io.Serializable
{
public static final Long serialVersionUID = new Long(1L);
}
JDK 1.1 results
$ /usr/java1.1/bin/serialver SerialUIDInt SerialUIDFloat SerialUIDObject
SerialUIDInt: static final long serialVersionUID = -1509588532565688561L;
SerialUIDFloat: static final long serialVersionUID = -7187539948674074587L;
SerialUIDObject: static final long serialVersionUID = -2830734355633622104L;
JDK 1.2 / JDK 1.3 results
$ /usr/java1.2/bin/serialver SerialUIDInt
SerialUIDInt: static final long serialVersionUID = 1L;
$ /usr/java1.2/bin/serialver SerialUIDFloat
Exception in thread "main" java.lang.IllegalArgumentException: field type
mismatch
at java.lang.reflect.Field.getLong(Native Method)
at java.io.ObjectStreamClass$2.run(ObjectStreamClass.java:338)
at java.security.AccessController.doPrivileged(Native Method)
at java.io.ObjectStreamClass.<init>(ObjectStreamClass.java:331)
at java.io.ObjectStreamClass.lookupInternal(ObjectStreamClass.java:111)
at java.io.ObjectStreamClass.lookup(ObjectStreamClass.java:59)
at sun.tools.serialver.SerialVer.serialSyntax(SerialVer.java:156)
at sun.tools.serialver.SerialVer.main(Compiled Code)
$ /usr/java1.2/bin/serialver SerialUIDObject
Exception in thread "main" java.lang.IllegalArgumentException
at java.lang.reflect.Field.getLong(Native Method)
at java.io.ObjectStreamClass$2.run(ObjectStreamClass.java:338)
at java.security.AccessController.doPrivileged(Native Method)
at java.io.ObjectStreamClass.<init>(ObjectStreamClass.java:331)
at java.io.ObjectStreamClass.lookupInternal(ObjectStreamClass.java:111)
at java.io.ObjectStreamClass.lookup(ObjectStreamClass.java:59)
at sun.tools.serialver.SerialVer.serialSyntax(SerialVer.java:156)
at sun.tools.serialver.SerialVer.main(Compiled Code)
(Review ID: 119652)
======================================================================