2010-06-14 8 views
2

Dans mon projet Eclipse, j'utilise un processeur d'annotation tiers, le Hibernate Metamodel Generator pour être exact. Le processeur d'annotation fonctionne comme prévu et génère les fichiers .java spécifiés par la spécification. Ces fichiers sont générés dans le répertoire du projet Eclipse sous un dossier "gen". Dans les propriétés du projet, ceci est correctement reflété puisque deux dossiers sources existent - "src" et "gen". Cependant, lorsque le projet est construit pour une raison quelconque, toutes les sources [générées] sous "gen" ne sont pas compilées (en vérifiant le répertoire "bin", je ne vois que les fichiers .class du répertoire "src"). Est-ce que quelqu'un sait pourquoi cela se passe?Pourquoi les classes générées par APT ne sont-elles pas compilées par Eclipse?

Répondre

3

Je l'ai compris il y a un certain temps et je pensais que je reviendrais et expliquerais ce qui se passe. Lorsque le compilateur est exécuté, il compile les sources existantes (celles que j'ai écrites), puis génère des fichiers source à partir des fichiers source existants, mais il ne compile pas ces classes générées. J'ai fini par transformer ceci en projet Ant (selon la configuration instructions). Donc, en gros, j'avais deux tâches: d'abord générer de nouveaux fichiers sources (lancer javac avec l'option -proc:only provoque le traitement des annotations sans compiler les sources) et la seconde compiler toutes les sources (générées et existantes).

+0

J'ai eu les mêmes problèmes avec Eclipse 3.5, mise à jour vers la version 3.6. – junkdog

1

Vous devrez actualiser le dossier "gen" dans Eclipse (par exemple dans l'Explorateur de packages) afin qu'Eclipse puisse voir les nouveaux fichiers générés et les compiler. Est-ce que tu fais ça?

+0

oui, la première chose que j'ai essayé. la chose étrange est l'éclipse dit qu'il ne reconnaît pas ces fichiers quand j'essaie de les utiliser (ligne rouge squiggly et un message sous la vue des problèmes), mais quand je me débarrasse du code qui les utilise et essaie d'utiliser auto-compléter montre les classes générées en option. J'ai également essayé de nettoyer puis de reconstruire le projet. J'ai l'impression que ces fichiers java sont générés au mauvais moment, car tout d'abord sous src est compilé en bin, puis les fichiers .java sont générés sous gen. Je ne sais pas si je peux vérifier cela très facilement – Andrey

Questions connexes