Maven clean install:找不到符号

时间:2013-10-03 19:24:47

标签: java maven build annotations

My Maven clean install失败了。以下是错误消息。

[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{
} 

我不知道为什么会出现问题,有人可以给我一些想法吗?

3 个答案:

答案 0 :(得分:6)

发现问题......

我道歉,因为我没有为任何人提供足够的代码来确定问题的根本原因,通常我的帖子中不包含import语句,但这次我应该有。下面的类是一个更完整的例子。我们可以看到,下面的类声明了一个静态导入到驻留在静态嵌套类中的对象(在同一个.java文件中)。虽然从编译的角度来看这不是非法的,但它在我的Maven clean安装中引起了问题。我仍然不确定为什么maven不喜欢这个,但这种静态导入的方式从一开始就没有意义。为了解决这个问题,我删除了静态导入,并在使用静态导入的任何地方替换了正常的静态调用(MyAnnoation.someObject)。

package com.classes;

import static com.classes.MyClass.MyAnnotation.someObject;

public class MyClass{

     @MyAnnotation
     public static class MyAnnotation{

     public static final Object someObject = new Object();

}

再次,我很抱歉没有在原帖中提供静态导入详细信息,希望有人认为这有用。

答案 1 :(得分:2)

您的maven-compiler-plugin是否正在使用1.5。默认情况下,它使用1.4并在1.5

中引入注释

答案 2 :(得分:0)

尝试以下方法:

  • 只导入其中一个类。

  • 对于其他情况,请始终使用FQN(完全限定名称),假设是注释(@com.foo.MyAnnotation)。

  • 此外,正如Vinay建议的那样,在source的{​​{1}}中设置targetmaven-compiler-plugin版本。