Compilazione di errori irreversibili: versione di destinazione non valida: 1.8 -> [Guida 1]


170

Problema simile a quello pubblicato su una versione di destinazione non valida: 1.7 ma dopo aver seguito il blog il mio problema è ancora irrisolto.

Impossibile eseguire l'obiettivo org.apache.maven.plugins: maven-compilatore-plugin: 3.1: compilare (compilazione predefinita) sul progetto hm_app: compilazione errore fatale: rilascio obiettivo non valido: 1.8 -> [Guida 1]

Stavo seguendo come tutorial quando ho affrontato questo problema.

abt java & mvn

C:\mvn>echo %JAVA_HOME% 
C:\mvn>echo %JRE_HOME%
C:\mvn>echo %MAVEN_HOME% yields

uscite

C:\Program Files\Java\jdk1.7.0_51
C:\Program Files\Java\jre7
C:\apache-maven-3.0.4

3
... e sei sicuro di avere Java 8 installato da qualche parte?
Makoto,

ho x86, 64 java 7 e no java 8
rvd

3
Va bene. Quindi perché stai provando a compilare il codice Java 8 senza un compilatore Java 8?
Makoto,

@Makoto ty per aver esaminato il mio problema con l'installazione di java 8 risolto .... ty man :)
rvd

@Makoto Finalmente ho capito cosa stavi dicendo "Okay. Allora perché stai provando a compilare il codice Java 8 senza un compilatore Java 8?" quindi ho appena cambiato il mio file pom.xml java.version> 1.8 </ / java.version> in java.version> 1.7 </java.version> e ho potuto usare anche compilazione mvn su java7
rvd

Risposte:


281

Hai impostato %JAVA_HOMEjdk 1.7, ma stai provando a compilare usando 1.8. Installa jdk 1.8 e assicurati di puntare %JAVA_HOMEa quello o rilascia la versione di destinazione su 1.7.

rilascio target non valido: 1.8

La versione di destinazione si riferisce alla versione jdk.


7
un'altra possibile soluzione nel mio caso è modificare il file pom.xml java.version> 1.8 </ /java.version> in java.version> 1.7 </java.version>
rvd

1
È proprio qui che Maven cerca la versione Java. Così efficacemente hai cambiato la versione java con una versione installata sul tuo% JAVA_HOME.
Zavior,

2
Su un mio Mac, esporto JAVA_HOME = /usr/libexec/java_home -v 1.8per impostare JAVA_HOME nella posizione corretta per 1.8 JDK. Fornisci la tua versione preferita al posto di 1.8. (Ci sono backtick dopo = e dopo 8).
bruce szalwinski,

Sì, hai capito bene. L'ho modificato per compilare un altro programma legacy che supporta solo ieri 1.7: D Grazie!
Davut Gürbüz,

31

Inserisci il valore nel plugin:

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

L'errore è stato utilizzare:

<source>${java.version}</source>
<target>${java.version}</target>

2
Nel mio caso, la soluzione è impostare sia la sorgente che il target su 1,7
thinkhy

in quale file posso trovarlo?
Yusril Maulidan Raji,

21

Nel mio caso, il "Run configuration" maven utilizzava il JRE errato (1.7). Assicurati di selezionare Esegui -> Esegui configurazioni -> (Tab) JRE per essere jdk1.8.x.


è vero, quindi abbiamo le seguenti cose da verificare la prossima volta se si verifica questo errore: JAVA_HOME, BUILD_Configuration, RUN_Configuration
Farhan

13

Il problema è stato risolto poiché avevo un JDK che indicava 1.7 e JRE indicava 1.8. Controlla nel prompt dei comandi la mia digitazione

java -version

e

javac -version.

Entrambi dovrebbero essere uguali.  


5

Per eclissi ecco come ho risolto il mio problema:

  1. Preferenze -> Compilatore -> Livello del compilatore del compilatore (passa a 1.8) inserisci qui la descrizione dell'immagine

  2. Perferenze -> JRE installati -> selezionare JAVA SE 8 1.8 inserisci qui la descrizione dell'immagine

  3. Ricostruisci tramite Maven usando Esegui come Maven build.

Non dovrebbe più mostrare l'errore di destinazione non valido.
Nota: non ho dovuto impostare o modificare altre variabili nel mio terminale. Spero che questo ti aiuti.


2

Metterlo nel tuo .profile si occuperà in modo dinamico del tuo $JAVA_HOME

export JAVA_HOME=$(/usr/libexec/java_home)

Successivamente chiudi la shell, aprine una nuova e prova con

echo $JAVA_HOME

Dovrebbe mostrare qualcosa di simile

/Library/Java/JavaVirtualMachines/jdk1.8.0_121.jdk/Contents/Home

In caso contrario , rimuovere eventuali altri incarichi di JAVA_HOME negli script di avvio. Ricorda che questi script di avvio iniziano con un, .quindi sono nascosti e non verranno inclusi quando si utilizzano i *caratteri jolly, ad esempio se si desidera eseguire il grep di tutti i file della home directory, è necessario:

grep -s JAVA_HOME ~/.* --exclude=.bash_history

1

Il problema che stavo affrontando era che ero in grado di creare una build maven dal prompt dei comandi ma non da Eclipse. Quello che ha funzionato per me in eclipse è che ho cambiato la configurazione di esecuzione in modo che punti alla cartella JRE all'interno di JDK piuttosto che lasciarlo in Cartella JDK solo secondo lo standard. Questa soluzione potrebbe funzionare anche per te, ma prova questo se e solo se tutti i percorsi java sono corretti, java e javac mostrano la stessa versione presente nella destinazione di pom.xml.


Questo era il mio problema e la mia soluzione.
Skychan,

1

Ho affrontato questo problema implementando Dokku, per qualche ragione stava scegliendo JDK 1.7

La creazione di un system.propertiesfile e l'impostazione ha java.runtime.version=1.8risolto il problema. Dokku ora utilizza Java versione 8. Scelta di un JDK su Heroku

Non ho mai dovuto farlo prima ...


Il suggerimento funziona ancora. Ho dovuto cercare molto per cambiare la versione Java in Dokku a 11. Grazie mille.
Mister Vanderbilt,

1

Come menzionato da Camila Macedo, devi indicare esplicitamente la versione java per compilatore-plugin. Per l'avvio a molla puoi farlo con la proprietà successiva:

  <properties>
    <java.version>1.8</java.version>
    <maven.compiler.release>8</maven.compiler.release>
  </properties>

Sì, l'impostazione è stata maven.compiler.releaserisolta nel mio progetto Maven.
Cortex,

1

Utilizzando IntelliJ ho dovuto installare un'altra versione JDK (superiore). Dopo aver riavviato IDE, tutto ha funzionato e anche tutte le dipendenze sono state risolte.


1
Il riavvio di intelliJ è stata la chiave per me. Ho aggiornato la variabile di ambiente di JAVA_HOME in modo che punti a una versione java diversa, ma sembra che la variabile di sistema non si aggiorni nella sessione CMD esistente. Forse sarebbe sufficiente creare una nuova sessione Terminale.
Ubeogesh,

0

Questa domanda non si poneva esplicitamente su Docker, ma ho ricevuto lo stesso errore quando avevo un file pom.xml che aveva come target 1.9 ...

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

... ma poi ha provato a eseguire test su un container Docker specificando "maven" da solo.

docker run -t --rm -v m2_repository:/root/.m2/repository -v $(pwd):/work -w /work maven mvn -e test

Per me, la correzione era quella di scegliere come target la versione esatta di cui avevo bisogno.

docker run -t --rm -v m2_repository:/root/.m2/repository -v $(pwd):/work -w /work maven:3.5.2-jdk-9 mvn test

(Puoi saperne di più qui .)


0

Sul computer Windows è possibile impostare temporaneamente la versione Java.
Ad esempio, per modificare la versione in Java 8, eseguire questo comando su cmd:

set JAVA_HOME=C:\\...\jdk1.8.0_65

0

Esegui un aggiornamento Maven forzato che porterà le versioni Jar 1.8 compatibili e quindi durante la creazione, aggiorna le versioni JRE in ambiente Execute a 1.8 da Run Configurations e premi RUN


0

Se stai usando Eclipse IDE, vai nel menu Finestra e seleziona le preferenze e lì cerchi i JRE installati e seleziona il JRE di cui hai bisogno per costruire il progetto


-4

Ciò che ha funzionato nel mio caso è questo:

Ho aperto pom.xmle sostituito quello dei plug-in come di seguito.

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

Prima di modificare entrambi i tag di origine e di destinazione 1.8, l'ho modificato 1.7e funzionava.


Capisci il cambiamento che hai fatto o hai apportato il cambiamento sperando nel meglio?
Popeye,

Tutti e due. Capisco che il progetto ora è in esecuzione su Java 1.7 versione. L'ho fatto sperando che funzionasse.
VIJAYKUMAR REDDY ALAVALA
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.