Quando eseguo un test JUnit, usando IntelliJ IDEA, ottengo
Come posso correggere questo?
- Utilizzo dell'SDK 1.7
- Il livello di lingua del modulo è 1.7
La build di Maven funziona bene. (Ecco perché ci credo nel problema di configurazione IDEA)
Quando eseguo un test JUnit, usando IntelliJ IDEA, ottengo
Come posso correggere questo?
La build di Maven funziona bene. (Ecco perché ci credo nel problema di configurazione IDEA)
Risposte:
Molto probabilmente hai opzioni di compilatore errate importate da Maven qui:
Controlla anche le impostazioni della versione del bytecode del progetto e del modulo ( target ) descritte nello screenshot.
Altri luoghi in cui è configurato il livello della lingua di origine :
Il livello di lingua predefinito di Maven è 1.5 (5.0), vedrai questa versione come livello di lingua del modulo nella schermata sopra.
Questo può essere modificato usando la configurazione di maven-compilatore-plugin all'interno pom.xml
:
<project>
[...]
<build>
[...]
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<configuration>
<source>1.8</source>
<target>1.8</target>
</configuration>
</plugin>
</plugins>
[...]
</build>
[...]
</project>
o
<project>
[...]
<properties>
<maven.compiler.source>1.8</maven.compiler.source>
<maven.compiler.target>1.8</maven.compiler.target>
</properties>
[...]
</project>
IntelliJ IDEA rispetterà questa impostazione dopo aver reimportato il progetto Maven nella finestra dello strumento Progetti Maven :
pom.xml
configurazione del plug-in del compilatore java potrebbe specificare la versione Java che sovrascriverà questa impostazione la prossima volta che si apportano modifiche a pom.xml (se è abilitato il reimport automatico) o reimportare il progetto manualmente.
Simile a quello discusso di seguito per IntelliJ 13 e 14, ma con un livello aggiuntivo nel pannello Impostazioni / Preferenze: Impostazioni > Build, Execution, Deployment > Compiler > Java Compiler .
In IntelliJ 13 e 14, seleziona Impostazioni> Compilatore> Interfaccia utente del compilatore Java per assicurarti di non scegliere come target una versione di bytecode diversa nel tuo modulo.
In IntelliJ IDEA 14.1 la "Versione bytecode di destinazione" si trova in una posizione diversa.
La seguente modifica ha funzionato per me:
File> Impostazioni ...> Build, Execution, Deployment> Compiler> Java Compiler : cambia la versione del bytecode Target da 1.5 a 1.8
Hai visto la tua configurazione di build dovrebbe piacerti se usi maven 3 e JDK 7
<build>
<finalName>SpringApp</finalName>
<plugins>
<plugin>
<artifactId>maven-compiler-plugin</artifactId>
<configuration>
<source>1.7</source>
<target>1.7</target>
</configuration>
</plugin>
...
</plugins>
...
</build>
Mi sono imbattuto in questo e la correzione era andare su Impostazioni progetto> Moduli> fare clic sul modulo particolare> scheda Dipendenze. Ho notato che l'SDK del modulo era ancora impostato su 1.6, l'ho cambiato in 1.7 e ha funzionato.
Modificare il file di impostazione del compilatore del progetto nel seguente percorso e cambiare 'target' in 1.7:
/project/.idea/compiler.xml
<bytecodeTargetLevel>
<module name="project-name" target="1.7" />
</bytecodeTargetLevel>
L'ho risolto impostando il campo vuoto:
Impostazioni> Compilatore> Compilatore Java> Versione bytecode progetto
Than IntelliJ utilizza la versione predefinita di JDK.
Da un momento all'altro ho anche avuto questo errore senza una ragione chiara. Ho modificato tutti i tipi di impostazioni sul compilatore / modulo ecc. Ma alla fine ho ricreato il progetto IntelliJ reimportando il progetto Maven e il problema è stato risolto. Penso che questo sia un bug.
IntelliJ 12 129.961
Ho colpito questo dopo solo un piccolo aggiornamento da IntelliJ IDEA 14 a v14.1. Per me la modifica di una modifica di pom principale / genitore mi ha aiutato e quindi ho fatto clic su Importa nuovamente Maven (se non è automatico).
Ma forse è appena sufficiente fare clic con il tasto destro sul modulo / i / modulo aggregato / padre e Maven -> Reimport.
Se si tratta di un progetto Gradle, nel tuo file build.gradle, cerca le seguenti impostazioni:
sourceCompatibility = "xx"
targetCompatibility = "xx"
Per tutti i subrpoject, nel file build.gradle di root, puoi inserire:
subprojects { project ->
sourceCompatibility = "1.7"
targetCompatibility = "1.7"
}
Sebbene sia possibile impostare manualmente i livelli di lingua in Idea> Impostazioni, se si tratta di un progetto Gradle, Idea sincronizza automaticamente i file .iml del modulo dalle impostazioni Gradle (testato con Idea 15+). Quindi tutte le modifiche manuali vengono annullate quando il gradle viene aggiornato.
Sulla base della documentazione Gradle , se questi non sono impostati, viene utilizzata la configurazione JVM corrente.
Ho trovato un altro modo di imbattermi in questo errore. Puoi ottenerlo se riorganizzi la struttura della tua directory e uno dei tuoi pom sta indicando il vecchio genitore che non configura più javac (perché quella configurazione è stata spostata a un livello medio). In tal caso, il livello superiore viene impostato automaticamente su 1,5 e il pom di livello inferiore si comporta in modo anomalo ereditandolo.
Quindi un'altra cosa da verificare quando vedi questo errore è che la tua struttura pom sta abbinando correttamente la tua struttura di directory.
Se la build di Maven funziona correttamente, prova a sincronizzare la struttura dei progetti IDEA di Maven e IntelliJ.
Nella finestra dello strumento Maven , fai clic sul pulsante Aggiorna . Premendo questo pulsante, IntelliJ IDEA analizza la struttura del progetto nella finestra dello strumento Maven.
Si noti che ciò potrebbe non essere utile se si utilizza la compilazione EAP, poiché la funzionalità di sincronizzazione di Maven potrebbe essere interrotta a volte.
Assicurati che sia selezionata la giusta depurazione. File> Struttura del progetto
Seleziona il tuo progetto e vai alla scheda Dipendenze. Seleziona la dipendenza corretta dal menu a discesa o creane una nuova.
Se tutte le soluzioni precedenti non hanno funzionato per te (che era il mio caso), puoi eliminare i file di configurazione di intellij:
Intellij ne rigenererà di nuovi in seguito. Tuttavia, ATTENZIONE, questo eliminerà anche tutta la configurazione di Intellij fatta sul progetto (es .: configurazione della modalità debug, ...)