2015-11-25 6 views
5

Wenn ich eine Klasse kompiliere, die die Spring @org.springframework.web.bind.annotation.CrossOrigin Annotation mit Maven von der Befehlszeile enthält, kompiliert es einfach gut. Aber, wenn ich versuche, den gleichen Code mit IntelliJ Idea 15 zu kompilieren, ich diese seltsame Fehlermeldung erhalten:@CrossOrigin Annotation stoppt die Kompilierung in IntelliJ

[ERROR] /Users/gregederer/devewx2/geoengine/src/main/java/geoengine/controller/rest/TimeSeriesController.java:[34,1] annotation org.springframework.web.bind.annotation.CrossOrigin is missing value for the attribute <clinit> 

Dies zu https://community.oracle.com/message/4827054 zusammenhängen könnte. Aber dieses Problem wurde nie wirklich gelöst.

Irgendwelche Vorschläge?

Antwort

-2

Sie können den Fehler bei der Überprüfung durch IntelliJ ausschließen, indem Sie mit der rechten Maustaste darauf klicken und dann kompilieren.

Bearbeiten: Es scheint, die Aktualisierung der JDK ist die geeignete Lösung, mein Vorschlag sollte das Problem schnell umgehen und war eher eine Bandaid-Lösung, da der Validierungsfehler nichts beeinflusst haben sollte. Sieh Nikkis Antwort für ihre Erklärung.

+0

Dies sollte nicht die akzeptierte Antwort sein. Siehe Nikkis Antwort. http://StackOverflow.com/a/35544977/423045 – Jesse

1

Ich habe das gleiche Problem ... Der Ausschluss von der Validierung hat in meinem Fall nicht geholfen. Wenn ich es von CMD mit MVN kompiliere, funktioniert alles gut, aber von Intellij, tut es nicht. Meine intellij Einstellungen erzwangen die Verwendung von Java jdk 1.7 (benötigt für das Projekt). Wenn ich es auf 1.8 setze, habe ich keine Probleme. Ich nehme an, das ist ein Fehler in Java 7 (siehe here).

I've encountered the (known and resolved in 1.8) problem with javac failing on annotations with static final fields requiring complex initialization. The failure manifests itself on the latest 1.7

+0

Danke. Das hat für mich funktioniert –

12

Verwenden Sie JDK 1.7.0_80. Ich habe dieses Problem mit JDK 1.7.0_79 festgestellt. Arbeitete am 1.7.0_80 obwohl.

0

Ich hatte das gleiche Problem bei der Bereitstellung meiner App in Travis ci, die oracle jdk 1.7.0_76 installiert hatte. Ich erzwinge-jdk7 aktualisiert, dann auf jdk 1.7.0_80 aktualisiert. Die @CrossOrigin-Annotation hat sich danach nicht beschwert.

0

Nachdem ich dieses Problem heute behandelt hatte, durchsuchte ich auch das Internet und konnte keine klare Antwort finden. In meinem Fall war die Verwendung einer höheren Java-Version nicht möglich, da das Projekt in JDK 6 implementiert werden sollte. Am Ende fand ich jedoch die Lösung, hoffe, dass es jemand anderem helfen wird.

Schlüsselpunkt ist Java ist abwärtskompatibel.

Das ist die Antwort :). Sie können eine höhere JDK Version wie 1.7 or 1.8 verwenden, um Ihr Projekt zu kompilieren und -target Option zu verwenden, um kompilieren zu niedrigerer Version.

-target version

Generate class files that target a specified version of the VM. Class files will run on the specified target and on later versions, but not on earlier versions of the VM. Valid targets are 1.1, 1.2, 1.3, 1.4, 1.5 (also 5), 1.6 (also 6), and 1.7 (also 7).

The default for -target depends on the value of -source:

If -source is not specified, the value of -target is 1.7

If -source is 1.2, the value of -target is 1.4

If -source is 1.3, the value of -target is 1.4

If -source is 1.5, the value of -target is 1.7

If -source is 1.6, the value of -target is 1.7

For all other values of -source, the value of -target is the value of -source.

Ref: http://docs.oracle.com/javase/7/docs/technotes/tools/windows/javac.html

Ich war mit Maven so musste ich einfach <java.version> Eigenschaft im POM ändern, und das war es. Ich benutzte immer noch Java 8, mit dem letzten Maven, aber Maven kompilierte sich zu JDK6.