2010-06-11 4 views
5

Existe-t-il un moyen rapide (outil) de détecter, à partir de la source (ou même des classes compilées), quelles parties d'une application appellent les méthodes API Java implémentées uniquement dans une version Java spécifique? (Par exemple, quelles sont les parties de mon application qui sont spécifiques à Java6)Outil de vérification de la source des dépendances sur des versions Java spécifiques

Je ne souhaite pas nécessairement parcourir tous les champs ClassMismatchErrors et éviter la méthode d'essai et d'erreur. Disons que je veux seulement documenter quelles parties d'une application ne fonctionneront pas si elles ont été écrites pour, par exemple, Java6 et que je veux l'exécuter dans un JDK version 5.

Y at-il quelque chose comme ça? Google n'a pas aidé cette fois, et je n'ai trouvé aucune solution ici (un cas rare en effet :)

Répondre

3

Le Animal Sniffer pourrait être utile pour cela, en particulier son Maven plugin.

+0

wow c'est exactement ce que je cherchais, merci pour la réponse rapide et utile! Hudson est vraiment un grand logiciel, pas seulement comme un serveur CI, il semble :) – Gregor

+0

btw le projet a déménagé à Codehaus, où déjà la version 1.5 est disponible: http://mojo.codehaus.org/animal -sniffer-maven-plugin/ – Gregor

0

Si je vous comprends bien, ce que vous décrivez ne me semble pas être une très bonne idée. Il semble que vous vouliez construire une bibliothèque sur JDK 6 (en spécifiant -target 1.5), mais laissez-la tourner sur JDK 5 et avoir juste certaines classes ou méthodes ici et là ne fonctionnent pas (parce qu'elles avaient besoin d'un Java6 API seulement). Je ne ferais pas ça. Une méthode qui devrait fonctionner peut encore déclencher le chargement d'une classe qui contient elle-même une référence à une classe qui est nouvelle dans Java 6, et Error sera lancée.

Il est préférable d'opter pour la version prise en charge minimale et de la personnaliser.

+0

Merci pour la nourriture supplémentaire pour la pensée, Kevin. Je n'avais pas l'intention d'écrire un nouveau logiciel qui se dégrade de JDK6 en JDK5 (mais cela pourrait être très utile, en gardant qu'Animal Sniffer s'adapte aux dépendances de la manière que vous avez décrite). Je cherchais un outil pour analyser le code existant afin de me donner un rapide aperçu de ce qui fonctionnera et de ce qui ne fonctionnera pas lors du déploiement de l'application JDK6 en question sur un environnement JDK5, afin de pouvoir estimer les changements nécessaires s'adapter à l'ancienne version. – Gregor

Questions connexes