IDEA: javac: la versione 1.7 di origine richiede la versione 1.7 di destinazione


474

Quando eseguo un test JUnit, usando IntelliJ IDEA, ottengo

inserisci qui la descrizione dell'immagine

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)

Risposte:


689

Molto probabilmente hai opzioni di compilatore errate importate da Maven qui:

opzioni del compilatore

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 :

  • Struttura del progetto | Progetto

progetto

  • Struttura del progetto | Moduli (controlla ogni modulo) | fonti

fonti

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 :

reimportare


2
Corretta. Questa impostazione è comune a tutti i moduli di un progetto o è specifica per un determinato modulo?
James Raitsev,

1
Questa impostazione è per progetto, riguarda tutti i moduli.
CrazyCoder,

8
C'è qualche motivo per cui, dopo aver risolto questo problema e averlo applicato, sarebbe tornato a un valore errato (tramite modifiche al forno o altro)?
Patrick,

5
@Patrick, la pom.xmlconfigurazione 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.
CrazyCoder,

1
@CrazyCoder Ho cambiato il mio pom.xml dopo averlo cambiato una volta molto prima (ero in attesa di altre modifiche in arrivo al pom), quindi sembra una spiegazione abbastanza ragionevole. Grazie
Patrick,

358

IntelliJ 15, 2016 e 2017

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 .

inserisci qui la descrizione dell'immagine

IntelliJ 13 e 14

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.

inserisci qui la descrizione dell'immagine


3
Ho dovuto eliminare i miei moduli e lasciarlo risolvere automaticamente (lasciare vuoto per impostazione predefinita jdk)
Akin Okegbile

3
Funziona con l'ultima Idea14.1
Tushar il

Quindi qual è la soluzione qui?
AlikElzin-Kilaka

@ AlikElzin-kilaka, imposta il livello target su tutto ciò di cui hai bisogno.
Drew Noakes,

Qualcuno può spiegare perché dovrebbero inserire impostazioni specifiche del modulo nella schermata di configurazione delle preferenze globali, non nelle impostazioni del modulo ??
MK.

61

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

inserisci qui la descrizione dell'immagine

inserisci qui la descrizione dell'immagine


o è meglio lasciarlo vuoto, quando può essere determinato da jdk!
Dragonborn,

Perché esiste una configurazione diversa da quella di Maven?
AlikElzin-Kilaka

42

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>

22

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.


Ho provato questo ... Ho finito per dover eliminare i singoli moduli e lasciarli per la risoluzione automatica.
Akin Okegbile,

14

Ho trovato le opzioni richieste ('target bytecode version') in settings> compilatore> compilatore java nel mio caso (intelij idea 12.1.3)


10

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>

Grazie ha funzionato per me! Non dimenticare di fare "Crea modulo" [il nome della tua app] "" facendo clic con il tasto destro del mouse sul progetto
Shehaaz,

5

L'ho risolto impostando il campo vuoto:

Impostazioni> Compilatore> Compilatore Java> Versione bytecode progetto

Than IntelliJ utilizza la versione predefinita di JDK.


4

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


Lo stesso qui per IntelliJ 14.1.2. Reimportato il progetto ed è stato risolto.
srikanth,

4

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.


questo ha funzionato per me! l'ho fatto per il mio modulo di livello superiore e per i miei moduli figlio
abelnation

2

Ho risolto il metodo seguente

File >> Struttura del progetto >> Progetto >> Livello lingua del progetto -> imposta la versione corretta (es: 1.5)


1

controllare .idea / misc.xml a volte è necessario modificare manualmente l'attributo languageLevel = "JDK_1_X"


1

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.


1

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.


1

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


0

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.


0

Se tutte le soluzioni precedenti non hanno funzionato per te (che era il mio caso), puoi eliminare i file di configurazione di intellij:

  • project_directory / .idea / compiler.xml
  • project_directory / .idea / encodings.xml
  • project_directory / .idea / misc.xml
  • project_directory / .idea / modules.xml
  • project_directory / .idea / vcs.xml
  • project_directory / .idea / workspace.xml
  • eccetera.

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


0

È necessario modificare la versione del compilatore Java in build config.

inserisci qui la descrizione dell'immagine

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.