2015-07-23 7 views
9

Abbiamo appena aggiornato il progetto da jdk 1.6 a jdk 1.8. Durante la creazione del progetto nella mia macchina, ricevo un errore di inseguimento.Maven: errore irreversibile in fase di compilazione: versione target non valida: 1.8

[ERRORE] Impossibile eseguire obiettivo org.apache.maven.plugins: Maven-compiler-plugin: 3.3: compilazione (default-compilazione) su un'eccezione progetto: Errore irreversibile compilazione: non valida rilascio di destinazione: 1.8 -> [Aiuto 1]

Ecco il plugin Maven compilatore che è stato utilizzato

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

ho guardato il molti post e la maggior parte di loro sono stati legati con non avendo la corr versione ect configurata per java_home. Ho verificato tutti questi aspetti e non ho trovato nessuno di loro allarmante.

versione

Java -

qadeersmsiphone:main pdubey$ java -version 
java version "1.8.0_51" 
Java(TM) SE Runtime Environment (build 1.8.0_51-b16) 
Java HotSpot(TM) 64-Bit Server VM (build 25.51-b03, mixed mode) 

Maven Versione -

qadeersmsiphone:main pdubey$ mvn -version 
Apache Maven 3.1.1 (0728685237757ffbf44136acec0402957f723d9a; 2013-09-17 08:22:22-0700) 
Maven home: /usr/share/maven 
Java version: 1.8.0_51, vendor: Oracle Corporation 
Java home: /Library/Java/JavaVirtualMachines/jdk1.8.0_51.jdk/Contents/Home/jre 
Default locale: en_US, platform encoding: UTF-8 
OS name: "mac os x", version: "10.8.5", arch: "x86_64", family: "mac" 

e ho controllato che, mentre la costruzione l'esperto di progetto utilizza JDK 1,8

qadeersmsiphone:main pdubey$ mvn install -debug 
Apache Maven 3.1.1 (0728685237757ffbf44136acec0402957f723d9a; 2013-09-17 08:22:22-0700) 
Maven home: /usr/share/maven 
Java version: 1.8.0_51, vendor: Oracle Corporation 
Java home: /Library/Java/JavaVirtualMachines/jdk1.8.0_51.jdk/Contents/Home/jre 
Default locale: en_US, platform encoding: UTF-8 
OS name: "mac os x", version: "10.8.5", arch: "x86_64", family: "mac" 
[INFO] Error stacktraces are turned on. 
[DEBUG] Reading global settings from /usr/share/maven/conf/settings.xml 
[DEBUG] Reading user settings from /Users/pdubey/.m2/settings.xml 
[DEBUG] Using local repository at /Users/pdubey/.m2/repository 
[DEBUG] Using manager EnhancedLocalRepositoryManager with priority 10.0 for /Users/pdubey/.m2/repository 
[INFO] Scanning for projects... 

UPDATE: I cou Lo faccio funzionare rimuovendo il plugin di maven-compiler nel file pom (Idealmente, non voglio farlo). E ho anche notato che, anche se i rimuovono questo plugin, di solito scarica la versione 3.3 del plug-in del compilatore nel mio repository locale. Non sono sicuro di cosa non funzioni in questo plugin sebbene l'origine e la destinazione sembrino corretti.

+1

Davvero? "' Apache Maven 3.1.1 (... 2013-09-17 ... '" – Holger

+0

@Holger non so quale sia il significato di (..2013-09-17) ma ho scaricato il Maven da qui https: // archive. apache.org/dist/maven/maven-3/3.1.1/binaries/. Si noti che in precedenza avevo maven predefinito di mac (v3.0.3) che ho aggiornato alla v3.1.1 – Pankaj

+2

Sembra semplicemente più vecchio di Java 8, ma, naturalmente, questo non sarebbe un problema, a patto che il plug-in del compilatore e il compilatore invocato possano gestire la versione target richiesta 1.8, che ovviamente non possono, ma poiché la versione Maven è l'unico numero di versione che hai postato, Suppongo che tutto il resto sia così antico. Non so quali altri ostacoli si trovano nel tuo ambiente, ma la * prima * cosa che vorrei provare nella tua situazione è di scaricare da * qui * invece: http: // archive.apache.org/dist/maven/maven-3/3.3.3/binaries/ – Holger

risposta

10

Controllare la Java e la versione Javac - La mia versione di Java era 1.8.0_51

$ java -version 
java version "1.8.0_51" 

Ma la versione javac stava indicando vecchio JDK 1.7.0_67

$ javac -version 
javac 1.7.0_67 

Ci sono un paio di cose che dovremmo cercare -

  1. Assicurarsi che il collegamento simbolico stia puntando a correggere jdk. In caso contrario, rimuovere il collegamento esistente e crearne uno nuovo per il vostro JDK

    cd /System/Library/Frameworks/JavaVM.framework/Versions/ 
    rm CurrentJDK 
    ln -s /Library/Java/JavaVirtualMachines/<jdk version>.jdk/Contents/ CurrentJDK 
    
  2. in/Library/Java/Extension, ho avuto un tools.jar. Credo, questo era dal vecchio jdk.

    cd /Library/Java/Extensions 
    -rw-r--r-- 1 root admin 15286304 Jan 14 2015 tools.jar 
    

    Inserisci questa

    sudo rm -rf /Library/Java/Extensions 
    

punto 2 ha fatto il trucco per me :)

+0

Grazie, finalmente! Il punto 2 ha risolto anche questo per me. – circuitry

0

Ho avuto lo stesso problema:

> java -version 
java version "1.8.0_111" 

>javac -version 
javac 1.7.0.6 

ho controllato il percorso in Variabili di sistema e jdk non è stato aggiornato a jdk 8. Dopo aver aggiornato il percorso con il jdk corretto ha funzionato.

2

A volte questo problema è correlato a un JAVA_HOME utilizzato da Maven.

  • Nel mio caso particolare, ho provato ad avviare un target install e avevo esattamente il messaggio subj.
  • Poi ho provato un comando mvn -version e ho capito che utilizza jdk7
  • Poi ho eseguito in una console set JAVA_HOME=C:\Java\jdk8 (il mio percorso JDK, quindi il proprio potrebbe essere diverso)
  • Poi digitato mvn clean install test e ha funzionato solo fine finalmente

Buona fortuna!

Problemi correlati