[JAVA] Je suis bloqué en essayant de faire fonctionner mon propre traitement d'annotation dans Eclipse
Quand j'ai essayé de créer mon propre processus d'annotation et de le faire fonctionner dans Eclipse, je suis resté bloqué de différentes manières, alors prenez note.
environnement
Java
openjdk 10.0.2
Eclipse
Photon (4.8.0)
※Pleiades All in One
OS
Windows 10
supposition
Voir Mémo-Qiita d'utilisation de l'API de traitement d'annotations enfichable pour une explication du traitement des annotations lui-même et comment l'exécuter dans Eclipse.
La charge échoue
Symptômes
J'obtiens l'erreur "L'usine de processeur d'annotation ... n'a pas pu être chargée" dans le projet qui a défini le processus d'annotation.
J'étais perdu parce que je ne savais pas ce qui se passait parce que je n'avais pas d'informations détaillées.
Cause
- La version de la JVM exécutant Eclipse est plus ancienne que le code qui a écrit le processus d'annotation
――Après avoir essayé diverses choses, le processus d'annotation est resté bloqué même dans l'ancienne version d'Eclipse.
--Dans cet Eclipse, un message d'erreur détaillé a été affiché et l'erreur "Unsupported major.minor version xxx" s'est produite.
- Comme la version Java utilisée dans le projet était la même, j'ai remarqué que le programme exécutant le processus d'annotation = la version JVM d'Eclipse semble en être la cause.
Vérifiez la version de la JVM exécutant Eclipse
- Lancez la ligne de commande sur la machine exécutant Eclipse et exécutez
jcmd
> jcmd
6184 sun.tools.jcmd.JCmd
18860
- Le processus Java Eclipse génère uniquement l'ID de processus
--Output
VM.version
avec cet ID de processus comme argument
> jcmd 18860 VM.version
18860:
Java HotSpot(TM) 64-Bit Server VM version 25.162-b12
JDK 8.0_162
Vous pouvez voir que cela fonctionne à 8.
Comment répondre
- Exécutez Eclipse sur une version de Java compatible avec la version de votre code d'annotation
NoClassDefFoundError se produit
Statut
- Tentative de génération automatique du code source à l'aide de JavaPoet pendant le traitement des annotations
Symptômes
--La classe JavaPoet utilisée dans le processus d'annotation est introuvable et génère NoClassDefFoundError
.
Cause
- Une bibliothèque qui dépend du chemin de l'usine n'est pas ajoutée dans les paramètres de traitement des annotations d'Eclipse.
Comment répondre
--Ajoutez également la bibliothèque utilisée lors du traitement des annotations (JavaPoet dans ce cas) au chemin de l'usine.