33 votes

Outil graphique permettant de parcourir les objets sérialisés Java

Existe-t-il une application graphique pouvant ouvrir des fichiers d’objet Java sérialisés (format binaire et XML) et les afficher de manière navigable (peut-être comme le débogueur Eclipse qui affiche l’état des variables)?

Cela doit fonctionner au moins partiellement lorsque toutes les classes ne peuvent pas être résolues (une option pour attacher des fichiers jar supplémentaires serait bien) ou lorsqu'il y a des incohérences d'UID de version série.

Des points supplémentaires pour la possibilité d'apporter des modifications.

5voto

Jesse Glick Points 3877

Si vous utilisez NetBeans, installer http://deadlock.netbeans.org/hudson/job/nbms-and-javadoc/lastSuccessfulBuild/artifact/nbbuild/nbms/extra/org-netbeans-modules-apisupport-beanbrowser.nbm (disponible en tant que "NetBeans Runtime Inspecteur" à partir du Gestionnaire de Plugin dans les compilations de développement, sinon les télécharger directement). Dans l'onglet Services, cliquez-droit sur le Sérialisé Haricots nœud pour commencer. Si l'intérêt est là, il ne serait pas difficile à extraire de cet outil pour sa propre module (avec un plus détectable de l'INTERFACE utilisateur) et de poster sur le Plugin Portail.

Cet outil analyse le fichier sérialisé format directement, donc il n'est pas nécessaire d'avoir accès aux classes sérialisées. La modification de la ser fichier n'est pas pris en charge; ce serait plutôt plus de travail et est probablement rarement nécessaire.

4voto

Huibert Gill Points 595

Juste comme une solution rapide et sale:

Vous pouvez créer une classe simple dans eclipse qui charge / désérialise l'objet.

Placez un point d'arrêt et utilisez la vue de débogage Eclipse.

4voto

shsteimer Points 8749

Ok, donc je sais que vous voulez une interface graphique, mais voici un peu de code qui pourrait vous mettre dans la bonne direction de ce qui pourrait être mis en œuvre.

D'abord la désérialisation:

	File file = new File(filename);
	ObjectInputStream in = new ObjectInputStream(new FileInputStream(file));

	Object obj = in.readObject();
	in.close();

	return obj;

Une fois que vous avez l'objet désérialisé, vous pouvez utiliser la réflexion pour obtenir les données internes (notez que vous devez vérifier si il est accessible et si ce n'est de le rendre accessible de sorte que vous pouvez obtenir la valeur réelle:

Class clazz = obj.getClass();
	Field[] fs = clazz.getDeclaredFields();
	for (Field f : fs)
	{
		boolean acc = f.isAccessible();
		if(!acc)
		{
			f.setAccessible(true);
		}

		Object fieldObj = f.get(obj);
		String fieldName = f.getName();
		f.setAccessible(acc);
    }

Avec cette base, vous pourriez probablement créer une arborescence de la structure interne de l'objet et de l'afficher à l'interface graphique similaire à ce qui se voit dans l'éclipse du débogueur.

Je sais que ce n'est pas ce que vous avez demandé, mais il peut vous diriger dans la bonne direction pour une mise en œuvre qui permettra de répondre à la plupart de ce que vous voulez et le besoin.

3voto

Ross Judson Points 885

Ce n'est pas une interface graphique, mais jdeserialize est destiné à parcourir des flux sérialisés et à en rendre compte.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X