Chargement de classe Java prolixe

J’essaie de lister l’ordre dans lequel le chargeur de classe Java charge mes classes. Si -verbose paramètre -verbose , il -verbose chaque interface / classe unique qu’il charge, y compris des tonnes d’interfaces telles que Serializable, des exceptions, etc. est défini?

Je suppose que votre meilleur pari est de faire ce qui suit:

  • Affiche un texte fixe dès que votre méthode main démarre et juste avant sa fin.
  • Pipe la sortie prolixe dans un fichier
  • Utilisez des objects comme less ou grep pour trouver les classes chargées entre les deux balises de la méthode principale.

Il y a une question similaire et quelques réponses ici: Existe – t-il un moyen d’obtenir les classes qu’un ClassLoader a chargées?

Avez-vous essayé -verbose:class ?

Voici une expression sed qui parsingra la sortie de java -verbose: class pour produire des paires de nom de classe chargé et de son fichier jar. Vous pouvez également utiliser un sorting pour obtenir des fichiers jar uniques. Par exemple,

 java -verbose:class -version 2>/dev/null | sed -ne 's/\[Loaded \(.\+\) from \(.\+\)\]/\2/p' | sort -u 

les sorties

 /usr/local/jdk1.7.0_67/jre/lib/rt.jar