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 -version
na 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.
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
referência: http://java.dzone.com/articles/installing-jdk-7-mac-os-x
fonte
jdk1.7.0_45.jdk
, o meu erajdk1.7.0_51.jdk
Para encontrar o caminho nas preferências de Java, tente
/usr/libexec/java_home -X
Minha entrada Java7 se parece com isto:
fonte
Você precisa alterar a
JAVA_HOME
variá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 java
para encontrar o caminho de sua instalação Java e, em seguida, atualizeJAVA_HOME
para apontar para esse caminho (mas exclua a pasta bin à direita).fonte
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 / mavenrce 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"
fonte
export JAVA_HOME=`/usr/libexec/java_home`
funcionou bem para que o var JAVA_HOME fosse exportado corretamente.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.
fonte
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.
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
Vai saber.
Encontrei 1.7 aqui e estou usando isso para construir com:
/Library/Java/JavaVirtualMachines/jdk1.7.0_25.jdk/Contents/Home
fonte
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.
fonte
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.
fonte