Blogounage

Aller au contenu | Aller au menu | Aller à la recherche

Mot clé - programmation

Fil des billets - Fil des commentaires

mercredi 13 janvier 2010

Comment connaître la provenance d'une classe programmatiquement en Java

Il est possible par programmation de savoir d'où vient une classe : un jar ? un répertoire ? autre ?

Use case classique : vous pensez (et devez) ne plus avoir les commons-logging nulle part dans votre classpath, parce que vous êtes (intelligemment :-)) passés à SLF4J. Malgré cela, il semble que cette fichue classe soit toujours trouvée, mais vous n'arrivez pas à savoir dans quel jar (ou quel répertoire si vous travaillez directement avec les .class). Résultat, ça vous fout un bazar monstre dans la configuration de vos logs. Certains continuent à apparaitre alors que vous avez demandé à ce qu'ils ne soient pas affichés...

Le code est un peu sioux, alors je le mets ici au cas où ça vous servirait :

System.out.println(MaClasse.class.getProtectionDomain().getCodeSource().getLocation());

MAJ du 15/03/2010

Suite à l'incompréhension ci-dessous, voici quelques exemples pour illustrer ce que fait ce code :

Le code :

System.out.println(org.springframework.mail.MailSender.class.getProtectionDomain().getCodeSource().getLocation());
System.out.println(MyJunitTest.class.getProtectionDomain().getCodeSource().getLocation());

Affiche sous Windows :

file:/C:/m2repository/org/springframework/spring-context-support/2.5.6/spring-context-support-2.5.6.jar
file:/C:/tests/myproject-core/target/test-classes/

J'espère que l'utilité est un peu plus claire à présent.

vendredi 4 janvier 2008

The Mythical 5%

Via InfoQ, voici un article de Bruce Eckel sur l'informatique aujourd'hui.

Il commence par parler du "fascinant" 5% des programmeurs sont 20 fois plus productifs que les autres 95%., et élargit ensuite au monde de l'informatique : jeune, immature, ...

Note : Le titre de l'article de Bruce fait très certainement référence au célèbre livre "The Mythical Man-Month" de Frederick P. Brooks. C'est de ce livre qu'est issu la plus célèbre encore "loi de Brooks" :

Ajouter des ressources à un projet en retard le rend encore plus en retard

Je vous conseille aussi la lecture de cet ouvrage, ça se lit très bien et c'est très instructif.