Erro JAVA_HOME durante a compilação maven, versão OSX-10.8.4

10
Error: JAVA_HOME is not defined correctly.
  We cannot execute
  /System/Library/Frameworks/JavaVM.framework/Versions/CurrentJDK/Home/bin/java

Eu atualizei meu OSX para 10.8.4. Após a atualização do OSX, atualizei meu JDK e JRE para 7. Mas estou recebendo o erro acima quando estou tentando criar uma nova versão do projeto.

Quando eu corro ls -al /System/Library/Frameworks/JavaVM.framework/Versions/

Eu recebo a resposta abaixo

drwxr-xr-x  11 root  wheel  374 Jul 22 22:33 .
drwxr-xr-x  10 root  wheel  340 Jul 22 18:30 ..
lrwxr-xr-x   1 root  wheel   10 Jul 22 18:30 1.4 -> CurrentJDK
lrwxr-xr-x   1 root  wheel   10 Jul 22 18:30 1.4.2 -> CurrentJDK
lrwxr-xr-x   1 root  wheel   10 Jul 22 18:30 1.5 -> CurrentJDK
lrwxr-xr-x   1 root  wheel   10 Jul 22 18:30 1.5.0 -> CurrentJDK
lrwxr-xr-x   1 root  wheel   10 Jul 22 18:30 1.6 -> CurrentJDK
lrwxr-xr-x   1 root  wheel   10 Jul 22 18:30 1.6.0 -> CurrentJDK
drwxr-xr-x   7 root  wheel  238 Jul 22 18:30 A
lrwxr-xr-x   1 root  wheel    1 Jul 22 18:30 Current -> A
lrwxr-xr-x   1 root  wheel   59 Jul 22 18:30 CurrentJDK -> /System/Library/Java/JavaVirtualMachines/1.6.0.jdk/Contents

Por esta ls -al /System/Library/Frameworks/JavaVM.framework/Versions/CurrentJDK/Home/bin

Não vejo mais nenhum conteúdo no CurrentJDK.

Em execução /usr/libexec/java_home

Eu recebo:

/Library/Java/JavaVirtualMachines/jdk1.7.0_25.jdk/Contents/Home

Eu sou muito novo em trabalhar com o OS X. Deixe-me saber se ainda posso ter perdido algum ponto em torná-lo bem-sucedido.

arvind406
fonte
Você pode executar echo $JAVA_HOME, ls -al /System/Library/Frameworks/JavaVM.framework/Versions/CurrentJDK/Home/bine ls -al /System/Library/Frameworks/JavaVM.framework/Versions/e adicione o resultado à pergunta?
Nohillside
@patrix .bashrc -> export JAVA_HOME=/usr/libexec/java_home .profile -> export PATH=${JAVA_HOME}/bin:$PATH export CATALINA_HOME=/Library/Tomcat/Home .bashrc e .profile tem os comandos acima mencionados nele ..
arvind406
@Patrix .. Vejo que o caminho do java não é recuperado do arquivo bashrc. Quando eu defino JAVA_HOME do terminal separadamente apenas, então eu consigo criar um projeto. Por que isso pode estar acontecendo assim? Qualquer ideia ?
Arvind406

Respostas:

9

A Apple recomenda definir JAVA_HOME como "/ usr / libexec / java_home".

O que funcionou para mim foi agrupar isso em torno de $ (). Então, acabei configurando JAVA_HOME como $ (/ usr / libexec / java_home) com os seguintes comandos:

vim ~/.bash_profile 
export JAVA_HOME=$(/usr/libexec/java_home)
source ~/.bash_profile
hcpl
fonte
Isso funcionou para mim perfeitamente!
Rdegges
2

/System/Library/Frameworks/JavaVM.framework/Versions/CurrentJDK/Home/bin/java se existir, é o Java fornecido pela Apple, cuja versão mais recente seria um JRE 1.6.

Para usar o Oracle JDK (o java 7 que você mencionou), use o caminho / usr / bin / java se você o tiver instalado completamente. Observe que o JRE é apenas para applets Java e, portanto, não afeta / usr / bin / java

Para obter mais informações, consulte a documentação de instalação do Oracle.

e observe a partir daí

Para executar uma versão diferente do Java, especifique o caminho completo ou use a ferramenta java_home:

/usr/libexec/java_home -v 1.7.0_06 --exec javac -version

Para obter mais informações, consulte a página do manual java_home (1).

Marca
fonte
.profile -> export PATH = $ {JAVA_HOME} / bin: $ PATH export CATALINA_HOME = / Biblioteca / Tomcat / Home
arvind406
@arvind, o que esses comentários significam?
Mark
@ arvind406 sim, mas o que isso acrescenta ou pergunta sobre a minha resposta?
22413 Mark
comentários anteriores foram comentados na janela errada. Desculpas. Depois de atualizar para o 10.8 OSX, atualizei o JDK e o JRE para 7. Atualizei a pergunta mais uma vez. por favor, dê uma olhada e deixe-me saber se estou errado em algum lugar. Ao executar este comando /usr/libexec/java_home, recebo/Library/Java/JavaVirtualMachines/jdk1.7.0_25.jdk/Contents/Home
arvind406
@ Mark .. Vejo que o caminho não é recuperado do arquivo bashrc. Quando eu defino JAVA_HOME do terminal separadamente apenas, então eu consigo criar um projeto. Por que isso pode estar acontecendo assim? Qualquer ideia ?
Arvind406
1

Siga este link: https://stackoverflow.com/a/44564303/5005676 Se você vir o script mvn: O código falha aqui ---

Etapas para depuração e correção:

Etapa 1: Abra o script mvn /Users/Username/apache-maven-3.0.5/bin/mvn (Abra com o comando less como: less /Users/Username/apache-maven-3.0.5/bin/mvn)

Etapa 2: descubra o código abaixo no script:

  if [ -z "$JAVACMD" ] ; then
  if [ -n "$JAVA_HOME"  ] ; then
    if [ -x "$JAVA_HOME/jre/sh/java" ] ; then
      # IBM's JDK on AIX uses strange locations for the executables
      JAVACMD="$JAVA_HOME/jre/sh/java"
    else
      JAVACMD="$JAVA_HOME/bin/java"
    fi
  else
    JAVACMD="`which java`"
  fi
fi

if [ ! -x "$JAVACMD" ] ; then
  echo "Error: JAVA_HOME is not defined correctly."
  echo "  We cannot execute $JAVACMD"
  exit 1
fi

Etapa 3: está acontecendo porque a variável JAVACMD não foi configurada. Portanto, ele exibe o erro.

Nota: para corrigi-lo

export JAVACMD=Library/Java/JavaVirtualMachines/jdk1.8.0_131.jdk/Contents/Home/jre/bin/java

export JAVA_HOME=/Library/Java/JavaVirtualMachines/jdk1.8.0_131.jdk/Contents/Home/

Chave: se você deseja que ele seja permanente emacs.profile aberto

poste os comandos e pressione Ctrl-x Ctrl-c (salvar-buffers-kill-terminal).

Shubham Verma
fonte