IntelliJ: Errore: java: errore: versione 5 non supportata


14

Sto usando IntelliJ IDEA Ultimate 2019.3.1 . Ogni volta che provo ad avviare un semplice progetto Java Maven (potrebbe anche essere un semplice Hello World), ricevo il seguente errore:

Error:java: error: release version 5 not supported

In esecuzione java --versiondal terminale ottengo il seguente output:

openjdk 11.0.5 2019-10-15
OpenJDK Runtime Environment (build 11.0.5+10-post-Ubuntu-0ubuntu1.1)
OpenJDK 64-Bit Server VM (build 11.0.5+10-post-Ubuntu-0ubuntu1.1, mixed mode, sharing)

In esecuzione javac --versiondal terminale ottengo il seguente output:

javac 11.0.5

Andando alle impostazioni del compilatore Java (come suggerito qui ) vedo questo:

Impostazioni del compilatore Java

Ho provato a modificare la " Versione bytecode di destinazione " su 1.8 ma ho i seguenti errori:

Error:(1, 26) java: package javafx.application does not exist
Error:(2, 20) java: package javafx.stage does not exist
Error:(4, 27) java: cannot find symbol
  symbol: class Application
Error:(12, 23) java: cannot find symbol
  symbol:   class Stage
  location: class Main
Error:(7, 9) java: cannot find symbol
  symbol:   method launch(java.lang.String[])
  location: class Main
Error:(11, 5) java: method does not override or implement a method from a supertype

Modificandolo alla versione 1.11 ottengo invece questo errore:

Error:java: Source option 5 is no longer supported. Use 6 or later.

Quale pensi sia il problema? Come posso risolverlo?


Qual è il livello linguistico del progetto e dei moduli?
Bas Leijdekkers,

Risposte:


33

Vedi  https://stackoverflow.com/a/12900859/104891 .

Prima di tutto, imposta language level/ release versionsin pom.xmlcosì:

<properties>
  <maven.compiler.source>1.8</maven.compiler.source>
  <maven.compiler.target>1.8</maven.compiler.target>
</properties>

In caso contrario, Maven imposta il valore predefinito su 1,5. Dovrai anche includere il maven-compiler-pluginse non hai già:

<dependency>
  <groupId>org.apache.maven.plugins</groupId>
  <artifactId>maven-compiler-plugin</artifactId>
  <version>3.8.1</version>
</dependency>

Inoltre, prova a modificare la versione Java in ognuno di questi posti:

File -> Struttura del progetto -> Progetto -> Project SDK -> 11.

File -> Struttura del progetto -> Progetto -> Livello lingua del progetto -> 11.

File -> Struttura del progetto -> Progetto -> Moduli -> -> Fonti -> 11

Nel progetto -> ctrl+ alt+ s-> Build, Execution, Deployment -> Compiler -> Java Compiler -> Versione bytecode progetto -> 11

Nel progetto -> ctrl+ alt+ s-> Build, Execution, Deployment -> Compiler -> Java Compiler -> Module -> 1.11.


2
Ho fatto tutto, ma continuo a vedere lo stesso errore ogni volta che
eseguo

@TusharJajodia prova ad includere anche maven-compiler-plugincome dipendenza
Josh Johnson il

Dopo aver provato varie soluzioni online senza fortuna, questa particolare riga ha risolto il problema: File -> Struttura del progetto -> Progetto -> Moduli -> -> Fonti -> 11
Maude

In realtà, il modo giusto per farlo per Java 9+ è definire il maven-compiler-pluginplugin come anziché la dipendenza. Non c'è bisogno di configurare nulla in IntelliJ, configura il tuo pom nel modo giusto e funzionerà in IntelliJ fuori dalla scatola!
Jacob van Lingen

2

Mi ci è voluto un po 'per aggregare una soluzione reale, ma ecco come sbarazzarsi di questo errore di compilazione.

  1. Apri le preferenze di Intelij
  2. Cerca "compilatore (o qualcosa di simile a" compi "
  3. scorrere fino a Maven -> compilatore java. Nel pannello di destra, verrà visualizzato un elenco di moduli e la versione di compilazione java associata "Versione codice byte di destinazione".
  4. Seleziona una versione> 1.5. Potrebbe essere necessario aggiornare il tuo jdk se non è disponibile. inserisci qui la descrizione dell'immagine

1

Se si utilizza l'avvio di primavera come genitore, è necessario impostare la proprietà java.version, poiché in questo modo verranno impostate automaticamente le versioni corrette.

<properties>
   <java.version>11</java.version>
</properties>

La proprietà definita nel proprio progetto ha la precedenza su tutto ciò che è impostato nel pom principale. Questo sostituisce tutte le proprietà necessarie per compilare la versione corretta.

Alcune informazioni sono disponibili qui: https://www.baeldung.com/maven-java-version


Sto anche iniziando a conoscere Spring Boot ora, quindi queste informazioni possono essere davvero utili per me :) Puoi spiegarmelo più in dettaglio? (In quale file dovrei cambiare quelle proprietà, cosa dovrei scrivere esattamente ...?) Grazie!
Robb1

1
Ho aggiunto alcune informazioni extra nel mio post.
V Jansen

1

se stai usando intellj arriva a setting => compilatore cambia la versione in ur java versione corrente


0

Aggiungo il codice successivo al mio pom.xmlfile, ha risolto il mio problema.

<properties>
    <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
    <maven.compiler.source>1.8</maven.compiler.source>
    <maven.compiler.target>1.8</maven.compiler.target>
</properties>

0

Devi aggiungere solo due righe nel tuo pom.xml e dopo questo il tuo problema sparirà .
Aggiungi queste due righe nel tuo pom.xml -

<!--pom.xml-->
<properties>
    <maven.compiler.source>1.8</maven.compiler.source>
    <maven.compiler.target>1.8</maven.compiler.target>
</properties>

0

All'interno di IntelliJ, aprire il file pom.xml

Aggiungi questa sezione prima (se il tuo file ha già una sezione, aggiungi le righe sottostanti alla sezione esistente):

<properties> 
      <maven.compiler.source>1.8</maven.compiler.source> 
      <maven.compiler.target>1.8</maven.compiler.target> 
   </properties>`

0

L'unica soluzione funzionante nel mio caso è stata l'aggiunta del seguente blocco a pom.xml:

<build>
    <plugins>
        <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-compiler-plugin</artifactId>
            <version>3.8.0</version> <configuration> <release>12</release>
        </configuration>
        </plugin>
    </plugins>
</build>
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.