Ant警告:隐式编译的文件不受注释处理

时间:2014-01-29 15:09:50

标签: java ant annotations javac

运行Ant构建脚本(Ant 1.8.2,Java 1.6)时,我收到此警告。

[javac] warning: Implicitly compiled files were not subject to annotation processing.
[javac] Use -proc:none to disable annotation processing or -implicit to specify a policy for implicit compilation.
[javac] 1 warning

添加<compilerarg value="implicit" />会产生:

[javac] error: Class names, 'implicit', are only accepted if annotation processing is explicitly requested
[javac] 1 error

添加<compilerarg value="proc:none" />会产生:

[javac] javac: invalid flag: proc:none
[javac] Usage: javac <options> <source files>
[javac] use -help for a list of possible options

有人可以了解警告的含义,以及如何摆脱警告?

1 个答案:

答案 0 :(得分:0)

我创建了一个简单的build.xml

<?xml version="1.0" encoding="UTF-8"?>
<project name="test" default="build" basedir=".">
    <target name="build">
        <javac destdir="bin" srcdir="." includes="**/*.java">
        </javac>
    </target>
</project>

使用简单的.java引用自定义注释。但是没有提供源代码。

public class T {
    @TestAnn
    public void test() {
    }
}

ant 命令的输出与您的第一个输出相同。我尝试执行 javac 命令来编译它,但是打印了error: cannot find symbol @TestAnn。我不知道为什么信息不同。

然后我添加注释类并再次运行 ant 命令。构建成功没有警告。

对于您的问题,可能的原因是:

  • 对自定义注释的java代码引用,但未找到注释类
  • 如果注释需要处理器,则基于the ANNOTATION PROCESSING seciton of javac。但他们的jar并不包含服务提供者配置文件。您应该指定-processorpath-processor选项,因此 javac 可以找到合适的处理器。