2009-06-18 4 views
4

Je travaille dans un projet Java où la bibliothèque Axe 2 d'Apache est utilisée. La bibliothèque de l'axe 2 est composée d'environ 20 fichiers jar et certains d'entre eux ne sont pas utilisés. Ce que je veux savoir s'il y a une méthode pour identifier lequel de ces fichiers jar sont ceux qui ne sont pas utilisés. J'utilise l'Eclipse IDE et j'ai pensé qu'une façon de résoudre le problème est d'ajouter un pot à la fois jusqu'à ce que je reçoive aucun message d'erreur sur les classes manquantes. Cependant, je ne suis pas sûr que cela fonctionnera car certaines des erreurs de classes manquantes n'apparaissent qu'à l'exécution.Comment puis-je identifier les pots inutiles inclus dans mon projet?

Est-ce que quelqu'un connaît une meilleure façon de résoudre ce problème?

Répondre

6

tattletale FTW

http://www.jboss.org/tattletale

JBoss Tattletale est un outil qui peut vous aider à obtenir un aperçu du projet sur lequel vous travaillez ou un produit que vous dépendez.

L'outil vous fournira des rapports qui peuvent vous aider

  • identifier les dépendances entre les fichiers JAR
  • Sélective si une classe est situé dans plusieurs fichiers JAR
  • Sélective si le même fichier JAR se trouve à plusieurs endroits
  • Avec une liste de ce que chaque fichier JAR exige et fournit
+0

Je vais essayer tattletale. Est-ce que quelqu'un sait si tattletales est capable d'identifier les dépendances de classe d'exécution? –

+0

Qu'est-ce que "les dépendances de classe d'exécution"? Je suppose que non si vous voulez dire réflexion, Class.forName et d'autres choses. – alamar

+0

Les dépendances d'exécution ne se réfèrent pas seulement au code réfléchissant mais aussi aux dépendances transitives, c'est-à-dire que dépend de B dépend de C. Votre application peut bien se compiler mais échouer lors du déploiement car C n'existe pas. – skaffman

1

Je voudrais suivez votre idée originale d'ajouter un pot à la fois jusqu'à ce qu'il compile. Vous avez raison de dire que vous pouvez toujours trouver des erreurs d'exécution, mais à moins que l'application ne soit trop grande pour une bonne couverture avec des tests manuels, je l'exécuterais simplement et la testerais pour ajouter des jars manquants.

1

Je ne pense pas que vous pouvez supprimer de façon fiable les fichiers jar, car les classes peuvent être résolues au moment de l'exécution, par ex. en utilisant

Class.forName(className); 

Vous pouvez être en mesure de déterminer les noms de classe utilisés pour ce qui précède, mais c'est peu probable.

Étant donné que les classes seront demandées/résolues lors de l'exécution, vous pouvez exécuter votre suite de tests (complète) pour déterminer si elle fonctionne toujours. Mais finalement, je serais très prudent de retirer les pots d'un paquet comme Axis. Je suppose qu'ils sont là pour un but. La taille du fichier JAR est-elle vraiment un problème?

Questions connexes