hg: jdk8/tl/jdk: 7082727: VirtualMachineError should declare its serialVersionUID

Joe Darcy joe.darcy at oracle.com
Fri Aug 26 00:01:11 UTC 2011


Dr Andrew John Hughes wrote:
> On 16:43 Thu 25 Aug     , joe.darcy at oracle.com wrote:
>   
>> Changeset: 624cc18a6cf9
>> Author:    darcy
>> Date:      2011-08-25 09:42 -0700
>> URL:       http://hg.openjdk.java.net/jdk8/tl/jdk/rev/624cc18a6cf9
>>
>> 7082727: VirtualMachineError should declare its serialVersionUID
>> Reviewed-by: alanb
>>
>> ! src/share/classes/java/lang/VirtualMachineError.java
>>
>>     
>
> Is there a general policy on serialVersionUIDs within the JDK i.e. that they are declared?
> I've seen a few warnings during builds, and I'm wondering what the correct fix is in the
> majority of cases.
>   

What the policy *should* be is roughly "all serializable classes that 
are exported API should declare serialVersionUIDs."  There could be 
exceptions to this in awt (or is it swing?) where some classes are 
declared serializable but are only intended to be written and read by 
the same release as opposed to across releases.  This policy can be 
enforced by changing the build to include "javac -Xlint:serial 
-Werror".  Additionally, for the classes that are supposed to be 
serializable across platforms, the values of the serialVersionUIDs 
should be tracked too.

If a class doesn't already have a serialialVersionUID, the correct fix 
is usually to declare an explicit serialVersionUID which matches the 
computed serialVersionUID in the first platform release the class was 
introduced.

-Joe





More information about the core-libs-dev mailing list