Est-il un outil pour découvrir si la même classe existe dans plusieurs petits pots dans le classpath?
Si vous avez deux pots dans votre classpath qui contiennent des versions différentes de la même classe, le classpath de l'ordonnance devient critique.
Je suis à la recherche d'un outil capable de détecter et de marquer les conflits potentiels dans un chemin de classe ou un ensemble de dossiers.
Certainement un script qui démarre:
classes=`mktemp`
for i in `find . -name "*.jar"`
do
echo "File: $i" > $classes
jar tf $i > $classes
...
done
avec quelques petits malins sort/uniq/diff/grep/awk plus tard a du potentiel, mais je me demandais si quelqu'un sait de toute les solutions existantes.
- Double Possible de Comment détecter les doublons dans les Bocaux dans le classpath?
Vous devez vous connecter pour publier un commentaire.
La Tattletale outil de JBoss est un autre candidat: "Spot si une classe/package est situé dans plusieurs fichiers JAR"
Ressemble jarfish à faire ce que vous voulez avec son "dupes" de commande.
Je pense qu'il ne devrait pas être trop dur à écrire un outil pour votre auto.
Vous pouvez obtenir le chemin de la classe des entrées du Système.getProperty("java.classe.chemin d'accès");
Puis à pied à travers les pots, zip, ou des répertoires qui y sont énumérés et de collecter toutes les informations sur les classes et trouver ceux qui peuvent causer des problèmes.
Cette tâche, de prendre 1 ou 2 jours tout au plus. Ensuite, vous pouvez charger cette classe directement dans votre demande et de générer un rapport.
Probablement java.classe.chemin d'accès à la propriété l'habitude de montrer toutes les classes, si vous exécutez dans certaines infrastructures complexes de classe personnalisée de chargement ( par exemple une fois j'ai vu une application qui charge les classes à partir de l'annuaire LDAP ), mais il serait certainement travailler pour la plupart des cas.
Heres un outil qui pourrait vous être utile, je n'ai jamais utiliser mon auto, mais essayez-le et laissez-nous savoir le résultat.
http://www.jgoodies.com/freeware/jpathreport/features.html
Si vous allez créer votre propre outil, voici le code que j'utilise le même script shell posté avant, mais que j'utilise sur ma machine Windows. Il s'exécute plus rapidement quand il y a des tonnes de fichiers jar.
Vous pouvez l'utiliser et le modifier de sorte qu'au lieu de récursivement pied un répertoire, lire le chemin de classe et de comparer les .le temps de classe attribut.
Il y a une classe de Commande vous pouvez sous-classe si besoin est, je pense, en l'exécution de l'option de "trouver"
Ce mon propre code, de sorte qu'il n'était pas destiné à être "prêt pour la production", juste pour faire le travail.
J'espère que cette aide.
Chemin De Classe Helper est un plug-in Eclipse qui aide un peu.
Essayer jwhich ou jcfind
http://javaclassfind.wiki.sourceforge.net/
http://which4j.dev.java.net/
Si vous n'aimez pas le téléchargement et l'installation des trucs que vous pouvez utiliser cette ligne de commande pour trouver jar conflits avec les standard les outils gnu. C'est rudimentaire, mais vous pouvez l'agrandir comme vous.
(il est un peu lent à s'exécuter si vous avez beaucoup de pots)
Explication:
Il répertorie tous les fichiers dans tous les pots, grep pour les fichiers de classe, trouve dupes, puis grep les pots d'origine pour voir où ils sont apparus. Il pourrait être rendue plus efficace grâce à une plus compliqué script.
jarclassfinder est un autre plugin eclipse option