La versione Java passa automaticamente a java 1.5 dopo l'aggiornamento di Maven


121

Sto usando eclipse come IDE. Quando faccio clic con il pulsante destro del mouse sul progetto e quindi faccio clic su Maven aggiorna la mia versione di Java, cambia a 1.5. Ecco cosa ho fatto finora, ho seguito tutti i passaggi qui elencati

http://qussay.com/2013/09/13/solving-dynamic-web-module-3-0-requires-java-1-6-or-newer-in-maven-projects/

  1. Ho cambiato "Java build path" in "workspace default jre 1.8.0_25"
  2. Quindi cambiato "compilatore java" in 1.8
  3. Quindi modificato "faccette del progetto"> java> 1.8
  4. Modificata la versione java pom.xml alla 1.8
    <build>
        <plugins>
            <plugin>
                <groupId>org.eclipse.jetty</groupId>
                <artifactId>jetty-maven-plugin</artifactId>
                <version>9.1.3.v20140225</version>
            </plugin>
            <plugin>
                <groupId>org.apache.maven.plugin</groupId>
                <artifactId>maven-compiler-plugin</artifactId>
                <version>3.1</version>
                <configuration>
                    <source>1.8</source>
                    <target>1.8</target>
                </configuration>
            </plugin>
        </plugins>
    </build>

Dopo tutto questo, quando clicco su "Maven update" la mia versione di java passa automaticamente alla 1.5. Anche nei passaggi precedenti, anche la versione dei primi due passaggi passa automaticamente alla 1.5. Come posso risolvere questo problema?

Risposte:


222

Apri il tuo pom.xmlfile e aggiungi le seguenti righe su di esso:

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

Dov'è 1.8la versione java del tuo JDK / JRE corrente. Un altro modo per farlo è aggiungere un <build>con maven-compile-pluginas

<build>
<plugins>
  <plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-compiler-plugin</artifactId>
    <version>3.2</version> <!-- or whatever current version -->
    <configuration>
      <source>1.8</source>
      <target>1.8</target>
    </configuration>
  </plugin>
</plugins>
</build>

MODIFICARE

Se stai cercando un modo per farlo funzionare con le versioni Java 9+, dai un'occhiata alla risposta di @ JDelorean qui sotto e non dimenticare di dargli anche un voto positivo :)


4
Penso di aver già fatto il secondo modo e ho postato anche il codice. Non vedere cosa hai cambiato in quel codice
asdlfkjlkj

1
Si. Quando ho risposto non hai inserito il codice. Quindi, aggiungi la prima parte della mia risposta. Il propertiestag. Se il tuo POM ha già un propertiestag, aggiungi i tag al suo interno, dovrebbe funzionare bene.
Jorge Campos

@asdlfkjlkj, la tua eclissi utilizza Maven incorporato o un'installazione Maven esterna? Un'altra domanda che la tua eclissi punta a un JRE o a un JDK? Queste sono due domande riguardanti eclipse + maven che fanno la differenza.
Jorge Campos

@ JorgeCampos - Ho pubblicato una nuova domanda. Hai qualche idea su questo? stackoverflow.com/questions/42855512/...
Aishu

@ JorgeCampos dove trovo il maven-complier-pluginper aggiungere il <build>? grazie
夢 の の 夢

23

Ho riscontrato lo stesso problema quando ho installato Java 9. Il mio progetto sarebbe impostato su J2SE-1.5 Execution Environment. Stranamente, il livello di conformità di Java 9 non è referenziato come le versioni precedenti, cioè "1.8", ma come "9". Quindi ho dovuto fornire le mie proprietà e la configurazione del plug-in del compilatore Maven di conseguenza:

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

e

<plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-compiler-plugin</artifactId>
    <configuration>
        <source>9</source>
        <target>9</target>
    </configuration>
</plugin>

Questo sembra aver risolto il problema.


1
Vero anche per Java 10+ e vorrei aggiungere che in un progetto Maven multi-modulo è richiesto solo nel POM genitore.
mmeany

Con Java 9 e versioni successive, è disponibile una nuova --release <version>opzione del compilatore, che è preferita rispetto a origine / destinazione. Questo può essere configurato con maven.compiler.releaseproprietà o <release>impostazione nel plug-in del compilatore Maven. Vedi: stackoverflow.com/questions/43102787/…
Thomas Taylor

7

La causa principale di questo problema è che se per qualsiasi motivo Eclipse non è in grado di risolvere un valore valido per la maven.compiler.sourceproprietà durante la generazione / aggiornamento del file .classpath dal pom, verrà semplicemente utilizzato per impostazione predefinita org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/J2SE-1.5.

Come sapientemente risposto da @ jorge-campos , esistono diversi modi per impostare tale proprietà.

Tuttavia, la risposta di Jorge non sembrava funzionare per me. Ecco le mie impostazioni:

<properties>
    <javaVersion>1.8</javaVersion>
    <maven.compiler.source>${java.version}</maven.compiler.source>
    <maven.compiler.target>${java.version}</maven.compiler.target>
</properties>

...

Esattamente. ${java.version}è mai intenzione di risolvere al (completamente diverso) immobili javaVersioned Eclipse ignorata la proprietà e utilizzato il valore predefinito.

Il che mi riporta alla parte " per qualsiasi motivo " con cui ho aperto; la stupidità degli sviluppatori può essere una di queste ragioni.


1
Come cambiare org.eclipse.jdt.launching.JRE_CONTAINER / org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType / J2SE-1.5
aName

Downvoting per aver detto "la stupidità degli sviluppatori può essere una di quelle ragioni".
Luke Hutchison,

Nel mio caso sto usando Maven / Tycho per creare plug-in Eclipse e il valore predefinito sopra è stato in definitiva derivato dall'ambiente di esecuzione specificato nel file MANIFEST.MF. La modifica dell'ambiente di esecuzione in JavaSE-1.8 ha risolto il problema.
mat101

3

Aggiungi queste righe al tuo pom.xml, quindi fai clic con il pulsante destro del mouse sulla libreria di sistema JRE -> Proprietà -> Imposta l'ambiente di esecuzione corretto su Java 1.8 o sulla versione che desideri impostare.

<plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-compiler-plugin</artifactId>
    <version>3.2</version> <!-- or whatever current version -->
    <configuration>
      <source>1.8</source>
      <target>1.8</target>
    </configuration>
  </plugin> 

Nella tua risposta manca <build> <plugins> ... la tua risposta qui ... </plugins> </build> che la rende una risposta più chiara per le persone.
Kyle Bridenstine

1

Ho avuto questo problema. Nel mio caso il tag <properties> e i tag nidificati che Jorge Campos menziona sopra erano nel posto sbagliato. Se li inserisco tra i tag <hostversion> e <dependencies> nel file pom.xml, questo comportamento si interrompe.

Questo può essere raccolto in Eclipse se la convalida di questi file è attivata.


1

Ho riscontrato un problema simile su una delle macchine dei miei compagni di squadra. Stava usando la vecchia versione di Eclipse, credo che stesse usando Keppler. Il progetto dopo essere stato aggiornato cambia la versione di JRE alla 1.5.

Il semplice aggiornamento di Eclipse all'ultima versione risolve questo problema.


Sì, no. Sto eseguendo Neon, le impostazioni del mio spazio di lavoro sono tutte 1.8, ma quando importi (o aggiorno) un progetto Maven, Eclipse insiste nell'usare J2SE-1.5.
Antares42

@ Antares42 sei in grado di creare da riga di comando senza problemi? Quale versione di m2e stai usando?
user902383

1
Posso compilare utilizzando la riga di comando (o meglio "Esegui come -> Maven build ...") senza problemi. Ma non appena faccio "Maven -> Aggiorna progetto" ottengo le librerie JRE come accennato ed Eclipse non riesce a compilare il progetto. Posso ancora costruire usando Maven però. Una volta aggiunta una maven.compiler.sourceproprietà come menzionato in una risposta sopra, tutto funziona correttamente. La mia versione m2e è 1.7.1-20161104-1805.
Antares42

1

Nel mio caso (vecchio JBoss Developer Studio), il problema era che gli ambienti JRE non includevano 1.8 (solo 1.7). Quando ho cambiato la maven-compiler-pluginversione alla 1.7 e ho fatto un progetto di aggiornamento di Maven, ho aggiornato la libreria di sistema Eclipse JRE alla 1.7. inserisci qui la descrizione dell'immagine

Quindi la soluzione è ottenere una versione IDE più recente che includa un ambiente JRE integrato 1.8 o successivo o provare a installarlo manualmente (vedere https://stackoverflow.com/a/35204314 )


0

Mi permetto di aggiornare quell'argomento con Java 11.

Ho installato OpenJDK11 sul mio computer e volevo usarlo in un'app.

Ho avuto problemi perché Eclipse cambiava sempre il mio JRE in JavaSE-1.5 quando aggiornavo il mio progetto con Maven.

Avevo impostato tutto come hai detto, ma ho sempre selezionato direttamente nel mio Java Build Path "java-11-openjdk.x86_64" come uno dei miei JRE Alternante. Ho risolto il mio problema selezionando in "Execution environment" JavaSE-10 (ma devi fare doppio clic su di esso e poi scegliere come JRE compatibile la tua versione OpenJDK11) come mostrato in figura. Configurazione dell'ambiente di esecuzione

Il progetto utilizzerà Java 11 grazie a quello (immagine) ma devi scrivere 10 per la versione java nel pom.xml e impostare java 10 anche nelle faccette del progetto.


0

Ho risolto il problema installando l'aggiornamento di eclipse "JAVA 12" dal mercato. Fa passare la mia eclissi da Keplero a Luna.

Dopodiché, sono stato in grado di impostare 1.8 come JDK standard, risolvendo il problema "aggiornamento maven".


-3

Ho cambiato Eclipse da kepler a neon e poi ho aggiornato il mio progetto con Maven -> Aggiorna progetto.

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.