Como mudar a versão do Java (JDK) no macOS sem dor de cabeça: guia para quem está cansado de erros
\n\nVocê já tentou executar um projeto antigo em Java e ele teimava em falhar com erro? Ou, ao contrário, um novo IDE exige JDK 17, mas você tem o JDK 8? Se você trabalha no macOS, certamente já enfrentou o fato de que alternar a versão do Java é uma verdadeira aventura. Parece que o comando java -version vive a própria vida e não obedece aos seus desejos.
No Stack Overflow, a pergunta "How to set or change the default Java (JDK) version on macOS?" acumulou milhares de visualizações e centenas de comentários. As pessoas se confundem com os caminhos, esquecem o JAVA_HOME e acabam quebrando o sistema. Vamos entender de uma vez por todas: como gerenciar o JDK no Mac, quais erros esperam os iniciantes e como evitá-los.
Este artigo não é uma documentação seca. Vamos percorrer o caminho do caos total até a compreensão clara. Vamos lá!
\n\nPor que o macOS funciona de forma tão "estranha" com o Java?
\n\nA primeira coisa a entender: o macOS é um sistema Unix e não gosta quando você coloca arquivos manualmente em pastas onde eles não deveriam estar. A Apple instala o JDK por padrão em /Library/Java/JavaVirtualMachines/, e utilitários do sistema como /usr/bin/java são apenas wrappers que olham para o seu JAVA_HOME.
O erro mais comum é tentar renomear ou excluir a pasta do JDK. Não faça isso! Em vez disso, você precisa aprender a gerenciar links simbólicos e variáveis de ambiente.
\n\nPasso 1: Descubra quais JDKs você já tem instalados
\n\nAntes de mudar qualquer coisa, vamos ver o que você tem. Abra o Terminal e execute:
\n\n/usr/libexec/java_home -V\n\nVocê verá algo como:
\n\nMatching Java Virtual Machines (3):\n 17.0.6 (x86_64) "Oracle Corporation" - "Java SE 17.0.6" /Library/Java/JavaVirtualMachines/jdk-17.jdk/Contents/Home\n 11.0.18 (x86_64) "Oracle Corporation" - "Java SE 11.0.18" /Library/Java/JavaVirtualMachines/jdk-11.jdk/Contents/Home\n 1.8.0_361 (x86_64) "Oracle Corporation" - "Java SE 8" /Library/Java/JavaVirtualMachines/jdk1.8.0_361.jdk/Contents/Home\n\nEsta é a lista completa de JDKs que o sistema conhece. Se você instalou o JDK via Homebrew ou manualmente, mas ele não aparece, significa que está na pasta errada ou não tem a estrutura correta.
\n\nErro nº 1: Achar que export JAVA_HOME é para sempre
\n\nIniciantes costumam digitar no terminal:
\n\nexport JAVA_HOME=/Library/Java/JavaVirtualMachines/jdk-17.jdk/Contents/Home\njava -version # mostra 17\n\nE ficam felizes. Mas basta fechar o terminal e abrir um novo — tudo volta à versão antiga. Por quê? Porque o export funciona apenas na sessão atual.
Solução: Adicione esta linha ao seu arquivo de configuração do shell. Se você usa zsh (shell padrão no macOS desde Catalina e versões posteriores), edite o arquivo ~/.zshrc:
echo 'export JAVA_HOME=$(/usr/libexec/java_home -v 17)' >> ~/.zshrc\nsource ~/.zshrc\n\nSe você usa bash (versões antigas do macOS), o arquivo se chama ~/.bash_profile.
Erro nº 2: Confusão entre java e javac
\n\nVocê alterou o JAVA_HOME, o comando java -version mostra a versão desejada, mas javac -version teimosamente mostra a antiga. Familiar?
Isso acontece porque java e javac são arquivos executáveis diferentes. Às vezes, eles podem ser de JDKs diferentes. Verifique onde eles estão:
which java # /usr/bin/java\nwhich javac # /usr/bin/javac\n\nSe os caminhos forem iguais — o problema é que /usr/bin/java é um link simbólico que pode apontar para uma versão antiga. Atualize-o usando o utilitário java_home: