Bonjour,

Je souhaite mentionner cet utilitaire précieux qu'est Tattletale.

Voici, en anglais, l'énoncé de ses fonctions:

The tool will provide you with reports that can help you

Identify dependencies between JAR files
Find missing classes from the classpath
Spot if a class/package is located in multiple JAR files
Spot if the same JAR file is located in multiple locations
With a list of what each JAR file requires and provides
Verify the SerialVersionUID of a class
Find similar JAR files that have different version numbers
Find JAR files without a version number
Find unused JAR archives
Identify sealed / signed JAR archives
Locate a class in a JAR file
Get the OSGi status of your project
Remove black listed API usage
And generate the same reports for your .WAR and .EAR archives


Par exemple, quand je cherche la classe com.sun.tools.ws.ant.WsGen,
qui n'est plus à son emplacement habituel dans les dernières distributions Glassfish, cette commande va m'aider à la rechercher:

java -Xmx512m -jar tattletale.jar C:\Outils\Programmation\glassfish-3.1.1\glassfish\lib c:\temp

En scannant le contenu de C:\Outils\Programmation\glassfish-3.1.1\glassfish\lib et en me produisant dans c:\temp le rapport qui suit. (le texte que vous lisez dans ce rapport est dans la pratique fait de liens qui dirigent vers des pages de détail).

JBoss Tattletale 1.1.2.Final
Dependencies

Class Dependants (INFO)
Class Depends On (INFO)
Dependants (INFO)
Depends On (INFO)
Graphical dependencies (INFO)
Transitive Dependants (INFO)
Transitive Depends On (INFO)
Circular Dependency (ERROR)

Reports

Class Location (INFO)
OSGi (INFO)
Sealed information (INFO)
Signing information (INFO)
Eliminate Jar files with different versions (WARNING)
Invalid version (WARNING)
Multiple Jar files (WARNING)
Multiple Jar files (Packages) (WARNING)
Multiple Locations (WARNING)
Unused Jar (WARNING)
Black listed (ERROR)
No version (ERROR)

Archives

__cp_jdbc_ra.jar (INFO)
__dm_jdbc_ra.jar (INFO)
__ds_jdbc_ra.jar (INFO)
__xa_jdbc_ra.jar (INFO)
ajax-wrapper-comp-1.8.1.jar (INFO)
ant-tasks.jar (INFO)
commons-fileupload-1.1.1.jar (INFO)
commons-io-1.3.1.jar (INFO)
console-core-3.1.1.jar (INFO)
flashlight-agent.jar (INFO)
fscontext.jar (INFO)
gf-client.jar (INFO)
imqbroker.jar (INFO)
imqjmsbridge.jar (INFO)
imqjmsra.jar (INFO)
imqjmx.jar (INFO)
imqstomp.jar (INFO)
javahelp.jar (INFO)
jaxr-ra.jar (INFO)
jsfcompounds-0.0.6.jar (INFO)
json-1.0.jar (INFO)
mejb.jar (INFO)
upgrade-tool.jar (INFO)
webui-jsf-4.0.2.8.jar (INFO)

(pour finir mon cas réel d'utilisation: je remarquerai qu'elle ne se trouve plus dans le jar glassfish/lib/ant-glassfish-task.jar où elle se trouvait encore récemment, et en relançant ma commande dans le répertoire glassfish/modules, je la trouverai désormais dans le jar glassfish/modules/webservices-osgi.jar.
La doc en ligne Oracle qui n'établit que les paramètres Ant pour la version 3.0.1 de Glassfish (j'utilise la 3.1.1) est obsolète: elle mentionne un modules/sun-appserv-ant.jar qui n'existe plus).


Emploi courant:
- Dans quel jar est ma classe?

- J'ai combien de jars qui ont la même classe dedans (pour les problèmes de: je charge une classe avec une version différente de celle que j'attendais).

- Quelles sont les dépendances d'une classe?


Cet utilitaire me fait gagner du temps lors de la création de fichiers de builds (Ant ou Maven) lorsque je me rends compte que les choses ne sont pas à l'emplacement où je les espérais.

Je vous le recommande donc.

Cordialement,

Grunt.