> Well, it would be more consistent to check for existence of protected or > public serialVersionUID with Reflection API and change the serialver output > accordingly.
Please see suggested fix and its output below. Thanks, -Yuri $ serialver java.security.PublicKey java.security.PublicKey: public static final long serialVersionUID = 7187392471159151072L; $ serialver java.lang.Exception java.lang.Exception: static final long serialVersionUID = -3387516993124229948L; $ serialver java.lang.AssertionError java.lang.AssertionError: private static final long serialVersionUID = -5013299493970297370L; $ serialver javax.xml.ws.soap.SOAPFaultException javax.xml.ws.soap.SOAPFaultException: private static final long serialVersionUID = -104968645459360720L; $ hg diff diff --git a/src/share/classes/sun/tools/serialver/SerialVer.java b/src/share/classes/sun/tools/serialver/SerialVer.java --- a/src/share/classes/sun/tools/serialver/SerialVer.java +++ b/src/share/classes/sun/tools/serialver/SerialVer.java @@ -38,6 +38,7 @@ import java.net.MalformedURLException; import java.util.StringTokenizer; import sun.net.www.ParseUtil; +import java.lang.reflect.Modifier; public class SerialVer extends Applet { GridBagLayout gb; @@ -211,7 +212,17 @@ Class<?> cl = Class.forName(classname, false, loader); ObjectStreamClass desc = ObjectStreamClass.lookup(cl); if (desc != null) { - return " static final long serialVersionUID = " + + String ams = ""; + try { + final int mod = + cl.getDeclaredField("serialVersionUID").getModifiers(); + ams = Modifier.isPublic(mod) ? "public" + : Modifier.isProtected(mod) ? "protected" + : Modifier.isPrivate(mod) ? "private" : ""; + } catch (NoSuchFieldException nsfe) { + ams = "private"; + } + return " " + ams + " static final long serialVersionUID = " + desc.getSerialVersionUID() + "L;"; } else { return null;