2016-07-21 8 views
13

Ich unterhalte ein Java 7 Web-Projekt, das multiline annotation verwendet, um bestimmte Konstanten zu speichern.Arbeiten mit Annotationsprozessoren in Eclipse 4.6 Neon

ich Eclipse-Fein konfigurieren kann, wenn ich Mars wurde mit, kann ich Tomcat so starte mit dieser Anwendung bereitgestellt und es funktionierte wie ein Zauber ...

Bis ich ein Upgrade! Nun erfolgt keine Annotationsverarbeitung trotz configuration.

ich gefunden habe, dass dieses Problem aufgrund einer Funktion ist von Eclipse 4.6, wie here

Java 6 Anmerkung Prozessoren dokumentiert werden im Batch-Compiler und in der IDE unterstützt. Standardmäßig werden Java 6-Prozessoren nur während eines Builds und nicht während der Bearbeitung ausgeführt. (Bug 188558)

Die verlinkte bug sagt, kurz gesagt, dass Annotation Verarbeitung wurde von Eclipse inkrementale Kompilierung entfernt (vielleicht die Build automatically ???) aus legitimen Gründen. Und tatsächlich, wenn ich mein Projekt im CI-Server mit Ant kompiliere, werden Annotationen wie üblich verarbeitet.

Aber ich kann mein Projekt nicht mehr in Eclipse ausführen. Es hängt vollständig von der korrekten Verarbeitung der Multiline-Annotation ab.

Bisher habe ich versucht, die Build Automatically Flag zu deaktivieren und das Projekt manuell zu erstellen. Kein Ergebnis.

Ich habe auch versucht-Java Compiler -> Annotation processing -> Factory Path zu gehen, wählen Sie das multiline-string Glas, gehen Sie zu Advanced Eigenschaften und deaktivieren Sie Run this container's processors in batch mode trotz der Checkbox nicht eingängig ist (ich meine, es sollte den Namen „im Inkremental-Modus Run“ werden und standardmäßig deaktiviert , nach dem oben genannten Fehler)

Die Anwendung ist eine Webanwendung, so versuche ich bei jedem Versuch, es auf lokalen Tomcat bereitzustellen.

Was denkst du kann ich dagegen tun?

+1

Wenden Sie sich an die Eclipse-Foren/Community? Ich denke, das ist so besonders, dass die Chancen, hier eine gute Antwort zu bekommen, nicht zu groß sind. Besser mit den Leuten sprechen, die dieses Produkt besitzen. – GhostCat

+0

Gibt es eine Lösung für diese Frage? – Tobia

+0

Haben Sie die Lösung für Ihr Problem? –

Antwort

0

Ein paar Vorschläge:

  1. Die multiline annotation Sie verwenden unterstützt nur 1,6 bis Java-Version auf. (Beispiel: MultilineProcessor gibt @SupportedSourceVersion(SourceVersion.RELEASE_6) an und die empfohlenen Pom-Einstellungen geben source und target Werte von 1.6 an.) Wenn Ihr Paket mit einem JDK Compliance Level größer als 1,6 erstellt wird, werden die Anmerkungen wahrscheinlich ignoriert.
  2. Anstatt diese Annotation zu verwenden, könnten Sie einfach die mehrzeiligen Strings fest mit Ihren String-Variablen codieren. Es würde Ihren Code weniger lesbar machen, aber Builds werden schneller.
+2

Ja, Sie sind richtig. Wir haben uns entschieden, die Strings (HTML-Templates) nicht für Lesbarkeitsprobleme zu kodieren, aber irgendwann entschied ich mich, von mehrzeiliger Annotation in die Verwendung von Classpath Resource Loading zu wechseln und speicherte die Templates in formatierten und lesbaren Dateien. –

+0

Zur Erinnerung, wenn Sie denken, dass meine Antwort verdient, die Prämie zu verdienen, müssen Sie es mir bald vergeben; Wenn nicht, kein Problem. http://StackOverflow.com/Help/Bounty – cybersam

+0

Sie sollten @VolkerK erwähnt haben :-) –

Verwandte Themen