2015-11-25 15 views
5

Quando compilo qualsiasi classe che contiene l'annotazione Spring @org.springframework.web.bind.annotation.CrossOrigin utilizzando maven dalla riga di comando, viene compilata correttamente. Ma, quando provo a compilare lo stesso codice utilizzando IntelliJ Idea 15, ottengo questo strano errore:@CrossOrigin annotazione interrompe la compilazione 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> 

Questo potrebbe essere correlato a https://community.oracle.com/message/4827054. Ma quel problema non è mai stato veramente risolto.

Qualche suggerimento?

risposta

-2

È possibile escludere l'errore dall'essere incluso nella convalida tramite IntelliJ facendo clic con il pulsante destro del mouse e quindi dovrebbe essere compilato.

Modifica: Sembra che l'aggiornamento del JDK sia la correzione appropriata, il mio suggerimento era destinato a bypassare rapidamente il problema ed era più di una correzione bandaid in quanto l'errore di convalida non avrebbe dovuto influenzare nulla. Vedi la risposta di Nikki per la sua spiegazione.

+0

Questa non dovrebbe essere la risposta accettata. Vedi la risposta di Nikki. http://stackoverflow.com/a/35544977/423045 – Jesse

1

Ho lo stesso problema ... Escluderlo dalla convalida non ha aiutato nel mio caso. Quando lo compilo da cmd con mvn, tutto funziona bene, ma da intellij, non è così. Le mie impostazioni intellij hanno forzato l'uso di java jdk 1.7 (necessario per il progetto). Quando l'ho impostato su 1.8, non ho problemi. Suppongo che si tratti di un bug in javac 7 (vedi 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

Grazie. Questo ha funzionato per me –

12

Provare a utilizzare JDK 1.7.0_80. Ho riscontrato questo problema utilizzando JDK 1.7.0_79. Lavorato su 1.7.0_80 però.

0

Ho avuto lo stesso problema durante la distribuzione della mia app in travis ci che aveva installato oracle jdk 1.7.0_76. Ho forzato l'aggiornamento di jdk7, quindi aggiornato a jdk 1.7.0_80. L'annotazione @CrossOrigin non si è lamentata dopo.

0

Dopo aver affrontato questo problema oggi ho anche sfogliato Internet e non sono riuscito a trovare una risposta diretta. Nel mio caso non era possibile utilizzare una versione Java più alta, perché il progetto doveva essere distribuito su JDK 6. Tuttavia alla fine ho trovato la soluzione, spero che possa aiutare qualcun altro.

Il punto chiave è Java è compatibile con le versioni precedenti.

Questa è la risposta :). È possibile utilizzare una versione più alta JDK come 1.7 or 1.8 per compilare il progetto e utilizzare l'opzione -target per eseguire la compilazione incrociata alla versione precedente.

-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.

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

Stavo usando Maven così ho dovuto cambiare <java.version> proprietà nel POM e che è stato. Stavo ancora usando Java 8, con l'ultimo Maven tuttavia Maven era cross compilazione a JDK6.

Problemi correlati