2014-01-29 10 views
6

Ich erhalte diese Warnung, wenn ein Ant-Build-Skript (Ant 1.8.2, Java 1.6) ausgeführt wird.Ant Warnung: Implizit kompilierte Dateien waren nicht Gegenstand der Annotationsverarbeitung

[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 

Hinzufügen <compilerarg value="implicit" /> produziert:

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

Hinzufügen <compilerarg value="proc:none" /> produziert:

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

Kann jemand etwas Licht auf, was die Warnung bedeutet und wie werde ich sie los?

+0

Von dem, was ich sagen kann, bedeutet die Warnmeldung, dass ant einige Klassen kompiliert, die nicht explizit auf eine '' Aufgabe über 'srcdir' hinzugefügt wurden, ein' ' oder was auch immer. Diese Klassen wurden wahrscheinlich einbezogen, da explizit eingeschlossene Klassen sie "importieren". Diese Klassen werden dann nicht mit ihren Anmerkungen verarbeitet, z.B. '@ Override',' @ Deprecated' usw. –

Antwort

0

ich eine einfache 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> 

Mit einem einfachen .java, die auf eine benutzerdefinierte Anmerkung verwiesen. Aber der Quellcode wird nicht angeboten.

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

Der Ausgang des ant Befehls ist das gleiche wie die erste Ausgabe. Ich versuche javac Befehl auszuführen, um es zu kompilieren, aber error: cannot find symbol @TestAnn wird gedruckt. Ich weiß nicht, warum die Nachricht anders ist.

Dann füge ich die Annotationsklasse hinzu und führe erneut den Befehl ant aus. Der Build ist ohne Warnung erfolgreich.

Für Ihre Frage, die mögliche Ursache ist:

  • Java-Code Bezug auf benutzerdefinierte Anmerkung, aber Annotation-Klasse ist nicht
  • Base auf the ANNOTATION PROCESSING seciton of javac, wenn die Anmerkung erforderlich Prozessor gefunden. Ihr Jar enthält jedoch keine Service-Provider-Konfigurationsdateien. Sie sollten -processorpath oder -processor Option angeben, so kann javac einen richtigen Prozessor finden.