Question

Est-il possible de modifier les fichiers .class afin d'ajouter des annotations Java à certaines méthodes? Fondamentalement, je veux parcourir les méthodes de chaque fichier de classe dans un fichier jar et annoter certains d'entre eux. Notez que ce n'est pas à l'exécution en utilisant le fichier jar. Au contraire, après que je suis fait je veux avoir des fichiers de classe modifiés avec les annotations.

J'ai accès au code source, donc s'il y a un modificateur automatique de code source, qui fonctionnerait aussi bien ...

Je suppose que je vais avoir besoin d'un outil tel que Javassist ou ASM . Si oui, lequel dois-je utiliser et comment pourrais-je aller à ce sujet?

Était-ce utile?

La solution 2

recherche sur Google pour une heure ou transformé cet article up qui semble complètement répondre à ma question: ASM . Pour écrire les fichiers de classe en utilisant le bytecode modifié, utilisez ClassWriter .

Eh bien, le temps de se rendre au travail, je suppose. :)

Autres conseils

En fait, c'est un cas d'utilisation classique pour AspectJ:

declare @method : public * BankAccount+.*(..) : @Secured(role="supervisor")

Alors que je vous accorde que la manipulation de code d'octets directe est plus puissant, AspectJ est beaucoup plus convivial, et il vous donne immédiatement des avertissements compilateur lorsque vous faites quelque chose de mal.

En outre, si vous utilisez tissant le temps de chargement , vous peut laisser le pot de bibliothèque d'origine sans changement, car le tissage arrive au moment de la classe charge.

Référence:

scroll top