Depois de instalar o Java JDK 7 para Mac OS X - mvn -version ainda mostra a versão Java 1.6.0_31

117

A Oracle lançou o Java JDK 7 em 26 de abril para Mac OS X. Segui as instruções de instalação e quando faço java -version em uma janela de terminal recebo:

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)

No entanto, quando faço mvn -versionna janela do terminal, recebo:

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"

Como faço para que o Maven use o Java JDK 1.7.0_04?

Obrigado pela ajuda.

Bruce Phillips
fonte

Respostas:

126

Finalmente encontrei a resposta aqui:

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

Você deve usar JAVA_HOME=$(/usr/libexec/java_home)em um Mac e definir o jdk atual via "Java Preferences.app".

Defina JAVA_HOME em ~ / .profile

Bruce Phillips
fonte
4
Instalei recentemente o Java 6 e não consigo localizar o JavaPreferences.app bcz mac agora não oferece suporte para Java. Pode me dizer agora como posso definir meu jvm sem usar JavaPreferences.
amod
2
Você pode aceitar sua própria resposta. Isso mostrará a todos nós que isso resolveu o problema. E você terá mais 10 ponts :)
Ibolit
5
Eu adicionei a ~ / .bash_profile: export JAVA_HOME = $ (/ usr / libexec / java_home)
skytteren
1
Ou você pode fazer "export JAVA_HOME = $ (/ usr / libexec / java_home -v 1.6)" de uma vez em vez de alterar usando Java Preferences.app
mac
incapaz de abrir o aplicativo Java Preferences no El Captian, fui em System Preferences -> Java.
Wolf7176
34

O problema é que o link simbólico "CurrentJDK" dentro das versões de JavaVm.framework aponta para o antigo jdk, então quando eu usei os seguintes comandos para definir o CurrentJDK para o mais recente (1.7.0_45) ele funciona

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

referência: http://java.dzone.com/articles/installing-jdk-7-mac-os-x

Mahmoud Adam
fonte
certifique-se de especificar a versão correta para jdk1.7.0_45.jdk, o meu erajdk1.7.0_51.jdk
ndequeker
1
Eu me pergunto por que os desenvolvedores Oracle não fizeram isso automaticamente? Não é trivial para mim. Essa resposta salvou meu dia.
Ivan Voroshilin
Isso não está funcionando para mim. Estou no el captian. a versão java do mvn se recusa a mudar. JAVA_HOME é preciso
Wolf7176
17

Para encontrar o caminho nas preferências de Java, tente /usr/libexec/java_home -X

Minha entrada Java7 se parece com isto:

<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>
dmolony
fonte
6
grrrrr, eu fiz isso e o caminho que ele lista para meu jdk1.7 não existe de todo :(
Dean Hiller
9

Você precisa alterar a JAVA_HOMEvariável de ambiente para o novo local do JDK 1.7.

Veja esta questão para possíveis locais onde JAVA_HOME pode ser definido. Em um terminal, digite which javapara encontrar o caminho de sua instalação Java e, em seguida, atualize JAVA_HOMEpara apontar para esse caminho (mas exclua a pasta bin à direita).

Nate
fonte
Tem certeza de que preciso disso em um Mac OS X? Eu não tive que fazer isso no passado. Se eu precisar definir JAVA_HOME, como posso saber qual caminho usar, pois a instalação do Java JDK 7 não me forneceu nenhuma informação de caminho de instalação e o aplicativo utilitário Java Preference no Mac não mostra um caminho para o JDK 1.7
Bruce Phillips
Se você olhar sua pergunta acima, verá que JAVA_HOME já foi definido e atualmente aponta para o antigo 1.6 JDK. Não estou familiarizado com a forma de alterar as variáveis ​​de ambiente no OSX, mas é isso que o Maven usa por padrão.
Nate
O problema é que uma atualização da Apple normalmente atualiza a versão java e define o valor JAVA_HOME. Definir o valor JAVA_HOME em .bashrc não funciona no OS X como no Linux. Também em nenhum lugar posso encontrar o caminho para o JDK 7 instalado pela Oracle.
Bruce Phillips
Além disso, Nate, minha pergunta NÃO é uma duplicata do post que você vinculou. Estou no OS X e atualizei para o Java JDK 7 usando a instalação do Oracle para Mac OS X, que foi lançado em 26 de abril.
Bruce Phillips
Nenhum Mac em vez de .bashrc usa .bash_profile e você deve ser capaz de encontrar a instalação em / System / Library / Java / JavaVirtualMachines / onde você precisa apontar para sua nova versão 1.7.0 Java
peter_budo
7

Caso alguém esteja instalando o Maven em um Mac de 64 bits executando o Mac OSX 'Mavericks', economize algum tempo tentando instalar o Maven. Eu estava tentando seguir isso (que falhou porque a localização de java_home mudou no Mavericks:

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

Eu estava arrancando meus cabelos até encontrar este site, que recomenda que você instale o homebrew e siga as instruções desta página: http://techspunky.blogspot.in/2013/10/how-to-install-maven-on-mac -osx-109.html

uma vez concluído, não entre em pânico quando $ maven -version não funcionar, em vez disso, use $ mvn --version como maven.apache.org/download.cgi recomendado.

Funcionou, mas então percebi que o SDK do Java que o Maven estava usando era a versão do Java: 1.6.0_65, que não é o SDK mais recente que instalei no sistema.

Depois de definir o JAVA_HOME =/usr/libexec/java_home

Ele estava usando o SDK correto: Maven home: /usr/local/Cellar/maven/3.1.1/libexec Java version: 1.7.0_45, fornecedor: Oracle Corporation Java home: /Library/Java/JavaVirtualMachines/jdk1.7.0_45. jdk / Contents / Home / jre Localidade padrão: en_US, codificação da plataforma: UTF-8 Nome do sistema operacional: "mac os x", versão: "10.9", arch: "x86_64", família: "mac"

Sucesso! mas espere ... da próxima vez que abri o terminal e executei mvn -v, ele voltou para a versão 1.6 do java. WTH!

é algum tipo de suposto bug pelo que li uso: echo JAVA_HOME = /usr/libexec/java_home -v 1.7| sudo tee -a / etc / mavenrc

e agora:

Página inicial do Maven: /usr/local/Cellar/maven/3.1.1/libexec Versão do Java: 1.7.0_45, fornecedor: Oracle Corporation Página inicial do Java: /Library/Java/JavaVirtualMachines/jdk1.7.0_45.jdk/Contents/Home/jre Localidade padrão: en_US, codificação da plataforma: UTF-8 Nome do sistema operacional: "mac os x", versão: "10.9", arco: "x86_64", família: "mac"

ConfusedDeer
fonte
export JAVA_HOME=`/usr/libexec/java_home`funcionou bem para que o var JAVA_HOME fosse exportado corretamente.
cdeszaq
4

O motivo pelo qual o Maven ainda está usando o Java 6 é que o script / usr / bin / mvn que o inicia não usa o método OS / X correto para resolver a versão atual do Java, conforme especificado nas Preferências do Java. Consulte este problema do Maven para obter detalhes:

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

Votar pode consertá-lo; entretanto, se você alterar o script / usr / bin / mvn conforme mostrado nos comentários e patch sobre esse problema, você obterá o resultado desejado.

Robert Elliot
fonte
2

Ok na minha máquina. Sim, o instalador do Oracle não fez exatamente o seu trabalho e me confundiu muito depois que o 1.6 ainda estava em execução.

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)

mas o SDK HOME é na verdade um link sim ainda apontando para 1.6

/Library/Java/Home no localizador GetInfo aponta para /System/Library/Java/JavaVirtualMachines/1.6.0.jdk/Contents/Home

no Terminal

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

Vai saber.

Encontrei 1.7 aqui e estou usando isso para construir com: /Library/Java/JavaVirtualMachines/jdk1.7.0_25.jdk/Contents/Home

Dave
fonte
0

Acho que o problema está parcialmente no mecanismo de inicialização do java. Consegui fazer o Eclipse rodar meu código em Java7, mas acho que o próprio eclipse ainda está rodando em Java6. Além disso, tenho um programa java que foi compilado pela última vez há um ano e construído usando jarbundler-2.1.0.jar (com a opção jvmversion = "1.6+"). Quando eu clico duas vezes no arquivo .app, ele executa Java6, mas quando clico duas vezes no arquivo .jar dentro do .app, ele executa Java7.

Além disso, não uso JAVA_HOME, mas ainda obtenho a versão correta do java "1.7.0_04" mostrada na pergunta. JAVA_HOME parece ser uma pista falsa. Talvez o Maven precise disso, mas o Eclipse não parece usá-lo, nem ao iniciar arquivos jar.

E depois de definir Java7 na ferramenta Java Preferences, não parece afetar o lançamento de arquivos .app java. No entanto, faz com que a 'versão java' do terminal funcione bem. Tentei desmarcar tudo, exceto a opção Java7, e então o Eclipse não funcionou.

dmolony
fonte
0

Se o seu JAVA_HOME estiver localizado no bash do usuário local, o mvn escolherá a versão java atual do sistema, independentemente do JAVA_HOME que você configurou.

Portanto, primeiro execute o comando ' which mvn ' e verifique qual executável mvn você está usando. Depois disso, edite o arquivo mvn e altere a variável JAVA_HOME para sua página inicial Java preferida.

Ankit Bhatnagar
fonte