2009-02-24 6 views
1

J'ai un fichier qui contient des classes Java sérialisées. Je voudrais analyser ce fichier afin d'obtenir une liste des classes dans le fichier et le serialVersionUID de chaque classe.Liste serialVersionUIDs dans les données sérialisées

Y a-t-il un outil que n'importe qui peut recommander pour faire ceci, ou peut-être quelqu'un pourrait offrir quelques pointeurs sur où je devrais commencer à accomplir ceci moi-même?

Vive

Rich

Répondre

1

Malheureusement, toutes les classes (même dans le JDK) n'obéissent pas à la spécification de sérialisation. En particulier readObject n'appelle pas toujours defaultReadObject ou readFields, avec l'erreur équivalente en writeObject.

Vous pouvez détecter les classes utilisées lors de la désérialisation. ObjectInputStream utilise resolveClass et resolveProxyClass pour mapper les descripteurs de classe à Class es (certaines sous-classes vous différentes règles pour la recherche de chargeur de classe).

+0

Merci, j'ai sous-classé mon ObjectInputStream et connecté les demandes aux deux méthodes que vous identifiez. Cela m'a donné suffisamment d'information pour aller de l'avant. – Rich

2

Je ne sais pas s'il y a déjà un tel outil (si vous avez accès aux classes elles-mêmes, l'outil serialver peut vous dire l'ID), mais si vous avez besoin rouler le vôtre, Sun serialzation spec devrait contenir toutes les informations dont vous avez besoin - en particulier, le grammar of the stream format.

Questions connexes