Dopo l'installazione di Java JDK 7 per Mac OS X - mvn -version mostra ancora la versione java 1.6.0_31


117

Oracle ha rilasciato Java JDK 7 il 26 aprile per Mac OS X. Ho seguito le istruzioni di installazione e quando eseguo java -version in una finestra di terminale ottengo:

java version "1.7.0_04"
Java(TM) SE Runtime Environment (build 1.7.0_04-b21)
Java HotSpot(TM) 64-Bit Server VM (build 23.0-b21, mixed mode)

Tuttavia quando lo faccio mvn -versionnella finestra del terminale ottengo:

Apache Maven 3.0.2 (r1056850; 2011-01-08 18:58:10-0600)
Java version: 1.6.0_31, vendor: Apple Inc.
Java home: /System/Library/Java/JavaVirtualMachines/1.6.0.jdk/Contents/Home
Default locale: en_US, platform encoding: MacRoman
OS name: "mac os x", version: "10.7.3", arch: "x86_64", family: "mac"

Come posso fare in modo che Maven utilizzi Java JDK 1.7.0_04?

Grazie per l'aiuto.

Risposte:


126

Finalmente ho trovato la risposta qui:

http://www.adam-bien.com/roller/abien/entry/java_se_development_kit_7

Dovresti JAVA_HOME=$(/usr/libexec/java_home)invece usarlo su un Mac e poi impostare il jdk corrente tramite "Java Preferences.app".

Imposta JAVA_HOME in ~ / .profile


4
Recentemente ho installato Java 6 e non sono in grado di individuare JavaPreferences.app bcz mac ora non fornisce supporto per Java. Può dirmi ora come posso impostare la mia jvm senza usare JavaPreferences.
amod

2
Puoi accettare la tua risposta. Questo mostrerà a tutti noi che questo ha risolto il problema. E avrai altri 10 punti :)
Ibolit

5
Ho aggiunto a ~ / .bash_profile: export JAVA_HOME = $ (/ usr / libexec / java_home)
skytteren

1
Oppure puoi eseguire "export JAVA_HOME = $ (/ usr / libexec / java_home -v 1.6)" in un colpo solo invece di modificare utilizzando Java Preferences.app
mac

incapace di aprire l'app Java Preferences in El Captian, sono passato da Preferenze di Sistema -> Java.
Wolf7176

34

Il problema è che il collegamento simbolico "CurrentJDK" all'interno delle versioni di JavaVm.framework punta al vecchio jdk, quindi quando ho usato i seguenti comandi per impostare CurrentJDK sull'ultimo (1.7.0_45) funziona

cd /System/Library/Frameworks/JavaVM.framework/Versions
sudo rm CurrentJDK
sudo ln -s /Library/Java/JavaVirtualMachines/jdk1.7.0_45.jdk/Contents CurrentJDK

riferimento: http://java.dzone.com/articles/installing-jdk-7-mac-os-x


assicurati di specificare la versione giusta per jdk1.7.0_45.jdk, la mia erajdk1.7.0_51.jdk
ndequeker

1
Mi chiedo perché gli sviluppatori Oracle non lo abbiano fatto automaticamente? Non è banale per me. Questa risposta mi ha salvato la giornata.
Ivan Voroshilin

questo non funziona per me. Sono su el captian. la versione java mvn si rifiuta di cambiare. JAVA_HOME è accurato
Wolf7176

17

Per trovare il percorso dalle preferenze di Java, prova /usr/libexec/java_home -X

La mia voce Java7 ha questo aspetto:

<dict>
    <key>JVMArch</key>
    <string>x86_64</string>
    <key>JVMBundleID</key>
    <string>com.oracle.java.7u04.jdk</string>
    <key>JVMEnabled</key>
    <true/>
    <key>JVMHomePath</key>
    <string>/Library/Java/JavaVirtualMachines/1.7.0.jdk/Contents/Home</string>
    <key>JVMIsBuiltIn</key>
    <false/>
    <key>JVMName</key>
    <string>Java SE 7</string>
    <key>JVMPlatformVersion</key>
    <string>1.7</string>
    <key>JVMVendor</key>
    <string>Oracle Corporation</string>
    <key>JVMVersion</key>
    <string>1.7.0_04</string>
</dict>

6
grrrrr, l'ho fatto e il percorso che elenca per il mio jdk1.7 non esiste affatto :(
Dean Hiller

9

È necessario modificare la JAVA_HOMEvariabile di ambiente nella nuova posizione JDK 1.7.

Guarda questa domanda per le possibili posizioni in cui potrebbe essere definito JAVA_HOME. In un terminale, digita which javaper trovare il percorso della tua installazione di Java, quindi aggiorna JAVA_HOMEin modo che punti a quel percorso (ma escludi la cartella bin finale).


Sei sicuro che ne abbia bisogno su un Mac OS X? Non ho dovuto farlo in passato. Se devo impostare JAVA_HOME come faccio a sapere quale percorso utilizzare poiché l'installazione di Java JDK 7 non mi ha fornito alcuna informazione sul percorso di installazione e l'app Java Preference utility sul Mac non mostra un percorso per JDK 1.7
Bruce Phillips

Se guardi la tua domanda sopra, puoi vedere che JAVA_HOME è già stato definito e attualmente punta al vecchio 1.6 JDK. Non ho familiarità con come modificare le variabili di ambiente in OSX, ma questo è ciò che Maven usa per impostazione predefinita.
Nate

Il problema è che un aggiornamento Apple normalmente aggiorna la versione java e imposta il valore JAVA_HOME. L'impostazione del valore JAVA_HOME in .bashrc non funziona su OS X come in Linux. Inoltre, non posso trovare il percorso per JDK 7 installato da Oracle.
Bruce Phillips

Anche la mia domanda Nate NON è un duplicato del post a cui ti sei collegato. Sono su OS X e ho aggiornato a Java JDK 7 utilizzando l'installazione Oracle per Mac OS X, che è stata appena rilasciata il 26 aprile.
Bruce Phillips

Nessun Mac al posto di .bashrc utilizza .bash_profile e dovresti essere in grado di trovare l'installazione in / System / Library / Java / JavaVirtualMachines / dove devi puntare sulla tua nuova versione 1.7.0 di Java
peter_budo

7

Nel caso in cui qualcuno stia installando Maven su un Mac a 64 bit con Mac OSX "Mavericks", risparmia un po 'di tempo e tiri i capelli nel tentativo di installare Maven. Stavo cercando di seguire questo (che non è riuscito perché la posizione di java_home è cambiata su Mavericks:

http://maven.apache.org/download.cgi

Mi stavo tirando fuori i capelli finché non ho trovato questo sito Web, che consiglia di installare homebrew e seguire le istruzioni su questa pagina: http://techspunky.blogspot.in/2013/10/how-to-install-maven-on-mac -osx-109.html

una volta completato, niente panico se $ maven -version non funziona, usa invece $ mvn --version come consigliato da maven.apache.org/download.cgi.

Ha funzionato, ma poi ho notato che l'SDK Java che Maven stava usando era la versione Java: 1.6.0_65, che non è l'ultimo SDK che ho installato sul sistema.

Una volta impostato JAVA_HOME =/usr/libexec/java_home

Stava usando l'SDK corretto: Maven home: /usr/local/Cellar/maven/3.1.1/libexec Versione Java: 1.7.0_45, fornitore: Oracle Corporation Java home: /Library/Java/JavaVirtualMachines/jdk1.7.0_45. jdk / Contents / Home / jre Impostazioni internazionali predefinite: en_US, codifica piattaforma: UTF-8 Nome sistema operativo: "mac os x", versione: "10.9", arch: "x86_64", famiglia: "mac"

Successo! ma aspetta ... la prossima volta che ho aperto il terminale e ho eseguito mvn -v è tornato alla versione 1.6 di java. WTH!

è una sorta di presunto bug da quello che ho letto uso: echo JAVA_HOME = /usr/libexec/java_home -v 1.7| sudo tee -a / etc / mavenrc

e adesso:

Home page di Maven: /usr/local/Cellar/maven/3.1.1/libexec Versione Java: 1.7.0_45, fornitore: Home page di Oracle Corporation Java: /Library/Java/JavaVirtualMachines/jdk1.7.0_45.jdk/Contents/Home/jre Impostazioni internazionali predefinite: en_US, codifica piattaforma: UTF-8 Nome sistema operativo: "mac os x", versione: "10.9", arch: "x86_64", famiglia: "mac"


export JAVA_HOME=`/usr/libexec/java_home`ha funzionato bene per me per ottenere la var JAVA_HOME esportata correttamente.
cdeszaq

4

Il motivo per cui Maven utilizza ancora Java 6 è che lo script / usr / bin / mvn che lo avvia non utilizza il metodo OS / X corretto per risolvere la versione corrente di Java come specificato nelle Preferenze Java. Vedi questo numero di Maven per i dettagli:

http://jira.codehaus.org/browse/MNG-4226

Votarlo potrebbe risolverlo; nel frattempo, se modifichi lo script / usr / bin / mvn come mostrato nei commenti e nella patch su quel problema, otterrai il risultato desiderato.


2

Ok sulla mia macchina. Sì, il programma di installazione Oracle non ha fatto esattamente il suo lavoro e mi ha confuso a non finire dopo che 1.6 era ancora in esecuzione.

java run time was updated 

java -version
java version "1.7.0_25"
Java(TM) SE Runtime Environment (build 1.7.0_25-b15)
Java HotSpot(TM) 64-Bit Server VM (build 23.25-b01, mixed mode)

ma l'SDK HOME è in realtà un collegamento sim che punta ancora a 1.6

/Library/Java/Home nel finder GetInfo punta a /System/Library/Java/JavaVirtualMachines/1.6.0.jdk/Contents/Home

in Terminal

./Home -> /System/Library/Frameworks/JavaVM.framework/Home

Vai a capire.

Ho trovato 1.7 qui e lo sto usando per creare con: /Library/Java/JavaVirtualMachines/jdk1.7.0_25.jdk/Contents/Home


0

Penso che il problema risieda in parte nel meccanismo di lancio di Java. Sono stato in grado di far eseguire a Eclipse il mio codice sotto Java7, ma penso che eclipse stesso sia ancora in esecuzione sotto Java6. Inoltre, ho un programma java che è stato compilato l'ultima volta un anno fa e costruito utilizzando jarbundler-2.1.0.jar (con l'opzione jvmversion = "1.6+"). Quando faccio doppio clic sul file .app viene eseguito Java6, ma quando faccio doppio clic sul file .jar all'interno di .app viene eseguito Java7.

Inoltre, non utilizzo JAVA_HOME, ma ottengo comunque la versione Java corretta "1.7.0_04" mostrata nella domanda. JAVA_HOME sembra essere una falsa pista. Forse Maven ne ha bisogno, ma Eclipse non sembra usarlo e nemmeno l'avvio di file jar.

E dopo aver impostato Java7 nello strumento Preferenze Java, non sembra influire sull'avvio di file java .app. Tuttavia fa funzionare bene "java -version" dal terminale. Ho provato a deselezionare tutto tranne l'opzione Java7, quindi Eclipse non funzionava affatto.


0

Se il tuo JAVA_HOME si trova nella bash dell'utente locale, mvn sceglierà la versione java corrente del sistema indipendentemente da JAVA_HOME che hai impostato.

Quindi esegui prima il comando ' which mvn ' e controlla quale eseguibile mvn stai usando. Dopodiché modifica il file mvn e cambia la variabile JAVA_HOME nella tua home java preferita.

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.