Maven clean install: impossible de trouver le symbole
Mon Maven installation propre est un échec. Ci-dessous le message d'erreur.
[ERROR] Failed to execute goal
org.apache.maven.plugins:maven-compiler-plugin:2.0.2:compile
(default-compile) on project MyProject: Compilation failure:
Compilation failure:
[ERROR] C:\..\MyClass.java:[13,2] cannot find symbol
[ERROR] symbol : class MyAnnotation
[ERROR] location: class mypackage.MyClass
MyClass.java
public class MyClass{
@MyAnnotation
public static class MyAnnotation{
//some static nested class code here...
}
MyAnnotation.java
@Retention (RetentionPolicy.RUNTIME)
public @interface MyAnnotation{
}
Je n'ai aucune idée de pourquoi cela poserait des problèmes, quelqu'un peut-il me donner quelques idées?
Vous avez à la fois une classe et une annotation nommé
C'est un projet que j'ai hérité et n'ont pas accès à la source 🙁
Alors, au moins, de vérifier votre colis. Le compilateur de Java a besoin de savoir où votre classe.
Si vous n'avez pas accès à la source, ce qui est de la compilation maven? Et comment voulez-vous savoir la source ressemble à ça?
Désolé, mauvaise formulation, je peux voir la source, mais j'ai hérité de fichier jar. Je ne peux pas le changer
MyAnnotation
? Sonne comme une mauvaise idée.C'est un projet que j'ai hérité et n'ont pas accès à la source 🙁
Alors, au moins, de vérifier votre colis. Le compilateur de Java a besoin de savoir où votre classe.
Si vous n'avez pas accès à la source, ce qui est de la compilation maven? Et comment voulez-vous savoir la source ressemble à ça?
Désolé, mauvaise formulation, je peux voir la source, mais j'ai hérité de fichier jar. Je ne peux pas le changer
OriginalL'auteur Jason | 2013-10-03
Vous devez vous connecter pour publier un commentaire.
Trouvé le problème...
Je m'excuse que je ne comprend pas assez de code pour quiconque de déterminer la cause racine du problème, normalement je ne comprend pas les instructions d'importation dans mes messages, mais cette fois, je devrais avoir. Ci-dessous est la classe la plus complète exemple. Comme nous pouvons le voir, ci-dessous la classe déclare un statique à l'importation d'un objet qui se trouve dans la statique de la classe imbriquée (au sein de la même .fichier java). Alors que ce n'est pas illégal d'une compilation point de vue, il a été à l'origine de problèmes dans ma Maven installation propre. Je ne suis pas encore %100 assurez-vous pourquoi maven n'aime pas cela, mais ce mode de statique de l'importation n'a pas vraiment de sens pour commencer. Pour résoudre ce problème, j'ai enlevé la statique de l'importation et de substituded normale appel statique (MyAnnoation.someObject) où la statique d'importation a été utilisé.
Encore une fois, toutes mes excuses pour ne pas fournir de la statique importer des données dans mon premier post, j'espère que quelqu'un trouve cela utile.
OriginalL'auteur Jason
Votre
maven-compiler-plugin
est à l'aide de 1.5. Par défaut utilisé 1.4 et les annotations sont introduits dans la version 1.5OriginalL'auteur Vinay Lodha
Essayez ce qui suit:
Importer juste l'une des classes.
Toujours utiliser la FQN (nom complet) pour les autres cas, supposons que l'annotation (
@com.foo.MyAnnotation
).Aussi, comme Vinay suggéré, définir la
source
ettarget
versions dans votremaven-compiler-plugin
's<configuration/>
.OriginalL'auteur carlspring