2008-09-16 10 views
8

Existe-t-il un outil pour détecter les fichiers jar inutiles? Par exemple, disons que j'ai myapp.jar, que je peux lancer avec un classpath contenant hibernate.jar, junit.jar et easymock.jar. Mais en fait cela fonctionnera bien en utilisant seulement hibernate.jar, puisque le code qui appelle junit.jar n'est pas accessible. Je réalise que la réflexion peut compliquer les choses, mais je pourrais vivre avec un outil qui ignore la réflexion. Sauf que cela semble être un problème relativement simple à résoudre.Rechercher le chemin de classe java minimal requis

S'il n'y a pas un tel outil, quelles sont les meilleures pratiques pour décider quelles dépendances sont nécessaires? Il me semble que ce doit être un problème commun.

Répondre

3

Ceci n'est pas possible dans un système qui pourrait utiliser la réflexion. Cela dit, un outil d'analyse statique pourrait faire du bon travail si vous n'utilisez AUCUNE réflexion.

2

Avez-vous jeté un coup d'œil à Dependency Finder?

http://depfind.sourceforge.net/

Une liste pratique de la plupart des autres outils de dépendance disponibles Java est également disponible sur ce site.

1

Je l'ai utilisé

http://code.google.com/p/jarjar/

et trouvé qu'il est assez bon.

En outre, vous découvrirez si vous avez cassé n'importe quel reflet facilement si vous avez un bon ensemble de tests d'unité/acceptation :).

0

Quelque chose à ajouter à la réponse de Bill K: vous pourriez ne pas utiliser de réflexion du tout, mais les fichiers JAR que vous utilisez pourraient l'être. Je me souviens avoir rencontré quelque chose comme ça avec xalan & xerces, où une exception ClassNotFoundException a été levée lors de l'exécution.