Como verificar a versão do Java (Windows, macOS, Linux): java -version e javac -version

目次

1. O que você aprenderá neste artigo (Resumo rápido)

Nesta página, organizaremos a maneira mais rápida de alcançar seu objetivo de “verificar a versão do Java a partir da linha de comando.”
Para compartilhar a conclusão primeiro, os comandos que você normalmente usará são estes dois:

  • A versão do Java que realmente é executadajava -version
  • A versão do JDK (compilador) para desenvolvimentojavac -version

Entretanto, em ambientes reais, é muito comum encontrar que “a versão que você esperava não é a que aparece.”
Este artigo não apenas lista os comandos—ele também explica por que ocorre o descompasso e como corrigi‑lo.

1.1 O que você será capaz de fazer após a leitura

Ao final, você será capaz de fazer o seguinte:

  • Verificar sua versão do Java imediatamente wp:list /wp:list
    • Usar java -version e javac -version com confiança para o propósito correto
  • Entender como verificar no Windows / macOS / Linux wp:list /wp:list
    • Verificar o Java levando em conta diferenças comuns específicas de cada SO
  • Identificar qual Java está sendo usado mesmo quando múltiplas versões estão instaladas wp:list /wp:list
    • Solucionar “Instalei, mas ainda aparece uma versão mais antiga” por conta própria
  • Compreender as causas típicas e correções quando a versão exibida não é a esperada wp:list /wp:list
    • Aprender o básico sobre PATH, JAVA_HOME e configurações de troca de versão

1.2 Público‑alvo (Iniciantes são bem‑vindos)

  • Você precisa usar Java e quer saber qual Java está instalado no seu PC primeiro
  • Foi informado que “Java 17 é obrigatório” ou “Apenas Java 8”, e você precisa verificar sua versão atual
  • Executou um comando e obteve uma versão diferente da esperada, e está travado
  • java funciona, mas javac não, e você não entende completamente as diferenças entre JRE e JDK

1.3 Um ponto chave para saber desde o início (Muito importante)

A maior parte da confusão ao verificar a versão do Java se resume a este ponto:

  • “Java instalado na máquina” não é o mesmo que “Java que realmente é executado.”

Quando existem múltiplas instalações de Java, o Java que é executado é aquele encontrado na localização de maior prioridade em tempo de execução.
É por isso que o resultado de java -version pode não ser “a versão mais recente que você acabou de instalar.”

Com esse descompasso em mente, este artigo explica, em ordem:

  • O que executar primeiro (o caminho mais curto)
  • O que verificar a seguir para identificar a causa (etapas de investigação)
  • Como corrigir (etapas de resolução)

passo a passo.

2. Comece aqui: Lista de comandos para verificação da versão do Java (Copiar & Colar)

Você não precisa de muitos comandos para verificar sua versão do Java.
Se você lembrar apenas desta seção, resolverá cerca de 90 % dos casos.

2.1 Verificar a versão do Java usada em tempo de execução

java -version

Este comando mostra a versão do Java que realmente está sendo executado neste PC agora.
É a forma mais básica — e mais importante — de confirmar seu ambiente Java.

O que a saída normalmente inclui (exemplo)

  • O número da versão do Java (ex.: 17 / 21 / 1.8, etc.)
  • A implementação (OpenJDK / Oracle JDK, etc.)
  • Detalhes do ambiente de tempo de execução, como 64‑bit / Server VM

O ponto chave é o seguinte: ele aponta para o java que tem a maior prioridade no seu PATH.
Não se trata de “onde você instalou o Java”, mas de “qual Java está sendo invocado.”
Tenha isso em mente.

2.2 Verificar a versão do ambiente de desenvolvimento Java (JDK)

javac -version

Este comando mostra a versão do compilador Java (javac).

O que isso indica

  • Se o JDK está instalado corretamente
  • Se você pode usar o Java não apenas para executar aplicativos, mas também para desenvolvimento/compilações

Se este comando exibir algo como:

  • “command not found”
  • javac não é reconhecido como um comando interno ou externo”

então é muito provável que o JDK não esteja instalado ou que seu PATH não esteja configurado corretamente.

2.3 A Diferença Entre java -version e javac -version (Confusão Comum de Iniciantes)

CommandWhat It ChecksMain Use
java -versionJava at runtimeRunning apps / verifying runtime behavior
javac -versionCompiler (JDK)Development / builds

Um equívoco comum é:

  • Se java -version funciona, você pode desenvolver código Java. Isso não está correto.
  • Executar apenas → java
  • Desenvolver (compilar) → javac

Esses dois têm papéis diferentes, portanto verificar ambos é a abordagem padrão.

2.4 Verificar Usando uma Ferramenta do JDK (Opcional)

Dependendo do seu ambiente, você também pode verificar a versão do JDK usando o comando a seguir:

jshell --version
  • jshell é uma ferramenta incluída por padrão no JDK 9 e posteriores
  • Se isso funcionar, é um bom sinal de que o JDK está instalado

Dito isso, desde que você entenda java -version e javac -version, isso geralmente é suficiente.

2.5 Ordem Recomendada para Verificar (Amigável para Iniciantes)

Se você é novo nisso, verificar na ordem a seguir reduz a confusão:

  1. java -version → Verificar a versão do Java usada em tempo de execução
  2. javac -version → Confirmar que o JDK de desenvolvimento está disponível
  3. Se os resultados não forem o que você esperava, veja a próxima seção para verificações específicas do SO

3. Como Ler java -version (Exemplo de Saída e Como Interpretá‑la)

Nesta seção, vamos analisar o que aparece quando você executa java -version, passo a passo para que iniciantes não se percam. Isso serve para evitar a situação comum de “Não sei o que devo observar”.

3.1 O Papel Básico de java -version

java -version

O que este comando informa é a versão do Java que será executada agora. Ele não mostra uma lista de versões do Java instaladas — mostra a que está realmente sendo usada.

É por isso que esse resultado se torna a base para coisas como:

  • Se você atende à versão do Java exigida por um aplicativo ou ferramenta
  • Se os ambientes de produção/teste estão executando a versão do Java pretendida
  • Se uma versão mais antiga do Java está sendo usada inesperadamente

3.2 Exemplo Típico de Saída (Ilustração)

A redação exata varia conforme o ambiente, mas geralmente você verá algo como isto:

java version "17.0.8"
Java(TM) SE Runtime Environment (build 17.0.8+9)
Java HotSpot(TM) 64-Bit Server VM (build 17.0.8+9, mixed mode)

Dentro dessa saída, a parte mais importante é a primeira linha.

3.3 O Que Verificar Primeiro (Isso É Tudo Que Você Precisa)

① Número da Versão

java version "17.0.8"
  • 17 → série Java 17
  • 1.8.x → Java 8
  • 21.x → Java 21

Em muitas empresas, versões LTS (Long‑Term Support) como 8 / 11 / 17 / 21 são comumente usadas. Primeiro, confirme se é a versão principal que seu projeto requer.

② Distribuição Java (Oracle / OpenJDK, etc.)

Java(TM) SE Runtime Environment

ou

OpenJDK Runtime Environment

Na maioria dos casos, você não precisa ser excessivamente rigoroso quanto a isso para uma verificação básica. Contudo, algumas empresas/projetos podem exigir explicitamente “Oracle JDK” ou “OpenJDK”, então pode ser relevante dependendo do seu ambiente.

③ “64‑Bit” / “Server VM”

64-Bit Server VM
  • Na maioria dos ambientes modernos, 64‑Bit é normal
  • A menos que você tenha um motivo especial, uma verificação rápida aqui é suficiente

3.4 Por Que Você Obtém “Uma Versão Java Diferente do Esperado”

Este é o ponto que mais confunde os iniciantes.

Um Equívoco Comum

  • “Instalei o Java mais recente.”
  • “Então java -version deveria mostrar a versão mais recente.”

Na realidade, isso não é garantido.

O motivo é simples:

  • java -version executa o primeiro java que encontra com a maior prioridade no PATH

É por isso.

Em outras palavras, se:

  • Um Java mais antigo permanece antes no PATH
  • Várias instalações de JDK/JRE estão misturadas

então um Java diferente daquele que você instalou pode ser executado.

3.5 java -version Verifica o “Resultado”, Não a “Localização”

Como uma forma importante de pensar:

  • ❌ Onde o Java está instalado
  • ⭕ Qual Java está realmente sendo executado

É para isso que serve o java -version.

Primeiro, simplesmente decida se o resultado exibido está correto.
Se não estiver, use as seções a seguir para identificar a causa e corrigi‑la — esse é o fluxo de trabalho mais seguro.

4. Como Ler javac -version (Confirmar se o JDK Está Instalado)

Aqui explicaremos o papel de javac -version e como interpretá‑lo.
Entender esse comando resolve rapidamente um problema comum: “Java funciona, mas não consigo desenvolver/compilar.”

4.1 O Que É javac? (Para Iniciantes)

javac é a abreviação de Java Compiler (Compilador Java).

  • javaexecuta um programa já compilado
  • javaccompila código‑fonte (.java)

Portanto, as funções são:

  • Se você só quer executar Java → java basta
  • Se você quer desenvolver/compilar Java → javac é necessário

Essa é a divisão básica de responsabilidades.

4.2 O Que Você Aprende com javac -version

javac -version

Esse comando mostra a versão do compilador Java que está sendo usada.

Saída de Exemplo (Ilustração)

javac 17.0.8

O número exibido pode ser interpretado como:

  • A versão do JDK propriamente dita
  • A versão base do Java usada para compilação na prática

Esse entendimento é suficiente na maioria das situações reais.

4.3 Observações Importantes Quando Não Coincide com java -version

Esse tipo de divergência acontece com frequência no dia a dia:

  • java -version → 17
  • javac -version → 11

Nesse caso, você tem uma configuração incompatível:

  • Runtime: Java 17
  • Desenvolvimento: Java 11

Problemas Que Essa Incompatibilidade Pode Causar

  • Você não consegue usar recursos de linguagem mais recentes
  • A compilação ocorre, mas surgem erros em tempo de execução
  • O comportamento difere entre o CI e o ambiente local

Portanto, como política básica, é mais seguro alinhar ambas as versões.

4.4 Quando javac Não é Encontrado (Erros Comuns)

Você pode ver mensagens como as seguintes:

  • javac não é reconhecido como um comando interno ou externo”
  • “command not found: javac”

Nesses casos, as causas prováveis são quase sempre uma das duas abaixo:

Causa 1: O JDK Não Está Instalado

  • Apenas o JRE (runtime) está instalado
  • Ferramentas de desenvolvimento não foram incluídas

Causa 2: O PATH Não Está Configurado

  • O JDK está instalado, mas o diretório bin não está incluído no PATH

Você pode distinguir de forma confiável entre essas situações nas seções de confirmação específicas para cada SO.

4.5 javac -version É um Indicador de “Posso Desenvolver?”

Se você for iniciante, lembrar‑se disso evitará confusões:

  • java -versionPosso executar Java?
  • javac -versionPosso desenvolver/compilar Java?

Se ambos os comandos exibirem as versões esperadas,
seu ambiente Java está em um estado onde a configuração mínima necessária está completa.

5. Como Verificar a Versão do Java no Windows

Esta seção explica como verificar a versão do Java no Windows, incluindo pontos que costumam causar problemas no uso real.
Como o Windows é um SO onde várias instalações do Java costumam coexistir, a ordem das verificações é especialmente importante.

5.1 Verificar Usando Prompt de Comando / PowerShell (Básico)

Primeiro, comece pelo método mais simples.

  1. Abra o Prompt de Comando ou o PowerShell
  2. Execute o comando a seguir
    java -version
    

Se você pretende desenvolver com Java, verifique também este:

javac -version

Neste ponto:

  • Se ambas as versões estiverem como esperado → Sem problema
  • Se a versão não for a esperada → Identifique a causa nos passos seguintes

É assim que você deve avaliar o resultado.

5.2 Um Comando-Chave Específico do Windows: where java

No Windows, é extremamente importante identificar qual java.exe está realmente sendo usado.

where java

Saída de Exemplo (Ilustração)

C:\Program Files\Java\jdk-17\bin\java.exe
C:\Program Files\Common Files\Oracle\Java\javapath\java.exe

Se várias linhas forem mostradas, a que aparece no topo tem a maior prioridade e é a que realmente será executada.

5.3 Por que uma versão antiga do Java é usada mesmo após a instalação

Causas comuns no Windows incluem:

  • Uma instalação mais antiga do Java ainda está presente
  • javapath aparece antes no PATH
  • JAVA_HOME e PATH não correspondem

Em particular, se o diretório a seguir estiver incluído no PATH:

C:\Program Files\Common Files\Oracle\Java\javapath

geralmente faz com que uma versão não intencional do Java seja invocada.

5.4 Como verificar o JAVA_HOME (Windows)

Em seguida, verifique JAVA_HOME.

echo %JAVA_HOME%
  • Se nada for exibido → JAVA_HOME não está definido
  • Se um caminho inesperado for exibido → Pode estar apontando para uma versão antiga do Java

Exemplo de uma configuração correta

C:\Program Files\Java\jdk-17

Observe que deve apontar para o diretório raiz do JDK, não para o diretório bin.

5.5 Checklist seguro para Windows

Para iniciantes, verificar nesta ordem ajuda a evitar confusão:

  1. java -version
  2. javac -version
  3. where java
  4. echo %JAVA_HOME%

Se todas as quatro verificações estiverem corretas,
você pode concluir que seu ambiente Java no Windows está configurado corretamente.

5.6 Verificar via GUI (Tela de Variáveis de Ambiente) pode esperar

O Windows também fornece uma tela GUI para visualizar e editar variáveis de ambiente, mas:

  • Qual Java está sendo usado
  • Por que há um descompasso

são avaliados com muito mais precisão usando a saída de comandos.

Use a GUI quando precisar corrigir as configurações,
mas sempre verifique com comandos — essa é a abordagem prática.

6. Como verificar a versão do Java no macOS

Esta seção explica como verificar a versão do Java no macOS.
Ao contrário do Windows, o macOS possui um mecanismo de nível de sistema para gerenciar JDKs, portanto conhecer os comandos dedicados ajuda a evitar confusão.

6.1 Verificar os comandos básicos no Terminal

Primeiro, comece com os mesmos comandos básicos usados em todos os lugares.

  1. Abra o Terminal
  2. Execute o comando a seguir
    java -version
    

Se você planeja desenvolver com Java, também verifique:

javac -version

Se esses dois resultados estiverem como esperado,
o ambiente Java realmente usado no macOS está ok.

6.2 Observação: macOS gerencia automaticamente o JAVA_HOME

No macOS, é comum não definir JAVA_HOME de forma fixa, mas sim obtê-lo dinamicamente usando um comando do sistema.

O comando representativo é:

/usr/libexec/java_home

Exemplo de saída (Ilustração)

/Library/Java/JavaVirtualMachines/jdk-17.jdk/Contents/Home

Este caminho é o diretório home do JDK padrão atual.

6.3 Listar JDKs instalados

Se vários JDKs estiverem instalados, o comando a seguir é extremamente útil:

/usr/libexec/java_home -V

Executar este comando exibe:

  • Versões de JDK instaladas
  • Fabricantes (Oracle / baseados em OpenJDK, etc.)
  • Arquiteturas suportadas

No macOS, esta é a maneira mais segura de confirmar primeiro quais JDKs estão realmente instalados.

6.4 Quando java -version e java_home não correspondem

Você pode encontrar uma situação como esta:

  • /usr/libexec/java_home → Java 17
  • java -version → Java 11

Nesses casos, as causas prováveis são:

  • JAVA_HOME está fixado em arquivos de configuração do shell ( .zshrc / .bashrc )
  • Um Java diferente aparece antes no PATH
  • Um Java instalado via Homebrew está tendo prioridade

No macOS, as configurações de nível de usuário têm precedência, portanto os arquivos de configuração do shell têm forte influência.

6.5 Checklist seguro para macOS

No macOS, verificar nesta ordem mantém as coisas organizadas:

  1. java -version
  2. javac -version
  3. /usr/libexec/java_home
  4. /usr/libexec/java_home -V

Com essas quatro verificações, você pode entender com precisão:

  • O Java atualmente em uso
  • A lista de versões Java instaladas
  • O JDK padrão

sem ambiguidade.

6.6 Pense em termos de “troca” no macOS

No macOS, é comum que:

  • Projetos diferentes exigem versões diferentes do Java
  • Você troque entre vários JDKs

Portanto:

  • Não presuma que há apenas um Java
  • Sempre confirme qual Java está sendo usado atualmente

Manter essa mentalidade facilita muito evitar problemas.

7. Como Verificar a Versão do Java no Linux

Esta seção explica como verificar a versão do Java em ambientes Linux, especialmente para uso em servidores.
Embora os métodos de gerenciamento variem conforme a distribuição, os conceitos principais são os mesmos.

7.1 Comece com os Comandos Básicos

No Linux também, comece com os comandos mais comuns:

java -version

Se for necessário desenvolvimento ou compilações, verifique também:

javac -version

Com esses dois comandos, você pode determinar se:

  • O Java usado em tempo de execução
  • O JDK usado para compilação

correspondem às suas expectativas.

7.2 Use which java para Encontrar o Binário Real

No Linux, é importante saber qual executável está realmente sendo invocado.

which java

Saída de Exemplo

/usr/bin/java

Esse caminho é o binário real do Java usado por java -version.

Se precisar de mais detalhes, execute:

ls -l $(which java)

Isso permite rastrear o link simbólico até seu alvo real.

7.3 Gerenciando Múltiplas Versões do Java no Debian / Ubuntu (update-alternatives)

Em servidores, é muito comum ter várias versões do Java instaladas.
Em sistemas baseados em Debian/Ubuntu, isso costuma ser gerenciado com update-alternatives.

Listar Alternativas do Java

update-alternatives --list java

Verificar a Seleção Atual

update-alternatives --display java

O caminho exibido aqui é o Java selecionado a nível de sistema.

7.4 Quando java -version e as alternativas Não Correspondem

Ocasionalmente, você pode ver um descompasso como:

  • update-alternatives → Java 17
  • java -version → Java 11

Possíveis causas incluem:

  • Um Java diferente aparece no PATH do usuário
  • Um Java instalado manualmente existe em /usr/local/bin, etc.
  • O PATH difere entre a execução normal e o sudo

No Linux, tanto:

  • Configurações a nível de sistema
  • Ambiente a nível de usuário

podem influenciar qual Java é executado.

7.5 Checklist Seguro para Linux

No Linux, verificar nesta ordem mantém as coisas claras:

  1. java -version
  2. javac -version
  3. which java
  4. update-alternatives --display java (se aplicável)

Isso fornece uma visão completa de:

  • O Java que está em execução
  • O arquivo executável real
  • A configuração do sistema

de forma resumida.

8. Por que a Versão do Java Exibida Difere (Causas e Correções)

A maioria dos problemas de versão do Java não é causada pelos próprios comandos, mas sim pela configuração do ambiente.
Aqui resumimos as causas que se aplicam a todos os sistemas operacionais.

8.1 Causa 1: A Prioridade do PATH Não É a Esperada

Esta é a causa mais comum.

  • Um diretório bin de Java antigo aparece antes no PATH
  • Você instalou um Java novo, mas não atualizou o PATH

Como Corrigir

  • Identifique qual Java está realmente sendo executado
  • Remova entradas desnecessárias do PATH ou ajuste a ordem

Apenas “adicionar” um novo caminho geralmente não basta.

8.2 Causa 2: JAVA_HOME Não Corresponde ao Java em Execução

  • JAVA_HOME → Java 11
  • Java em execução → Java 17

Essa situação também é muito comum.

Como Corrigir

  • Defina o JAVA_HOME para o diretório raiz do JDK
  • Garanta que o PATH use $JAVA_HOME/bin

Pense no JAVA_HOME como uma “referência”, e no PATH como a “prioridade de execução”.

8.3 Causa 3: java e javac Usam Versões Diferentes

Este é um caso clássico de mistura de versões de JRE e JDK.

  • O runtime funciona
  • O desenvolvimento ou as compilações falham

Como Corrigir

  • Escolha um JDK como padrão
  • Alinhe java e javac sob o mesmo JDK

8.4 Causa 4: IDE ou Ferramentas de Build Usam um JDK Diferente

  • Tudo parece correto no terminal
  • Erros ocorrem na IDE ou no CI

Nesses casos, a causa costuma ser configurações de JDK específicas da IDE.

Como Corrigir

  • Verifique explicitamente o JDK usado nas configurações da IDE
  • Não confie apenas na “detecção automática”

9. Uma Lista de Verificação para Ir Além de Apenas “Verificar”

Finalmente, vamos organizar o que você deve fazer após verificar sua versão do Java.

9.1 Se Seu Objetivo É Apenas Executar Java

  • O java -version atende aos requisitos?
  • O aplicativo inicia corretamente?

9.2 Se Seu Objetivo É Desenvolvimento ou Compilações

  • O javac -version atende aos requisitos?
  • O java e o javac mostram a mesma versão?
  • JAVA_HOME e PATH estão alinhados?

9.3 Se Você Usa Múltiplas Versões do Java

  • Sempre confirme qual Java está em uso no momento
  • Entenda o gerenciamento específico do SO (macOS / Linux)

10. FAQ (Perguntas Frequentes)

10.1 Qual a Diferença Entre java -version e javac -version?

java -version verifica a versão do runtime Java,
enquanto javac -version verifica a versão do compilador de desenvolvimento (JDK).
Como eles servem a propósitos diferentes, verificar ambos é a prática padrão.

10.2 Por Que o javac Não Foi Encontrado?

  • O JDK não está instalado
  • O PATH não está configurado corretamente

Na maioria dos casos, é uma dessas duas razões.

10.3 Instalei o Java, mas uma Versão Antiga Ainda é Exibida

Isso geralmente significa que um Java diferente tem prioridade maior no PATH.
Verifique o binário real com where java (Windows) ou which java (macOS/Linux).

10.4 Posso Usar Múltiplas Versões do Java com Segurança?

Sim, você pode.
No entanto, é crucial sempre saber qual Java está em uso no momento.

10.5 Qual Versão do Java Devo Usar?

Se não houver nenhum requisito especial, escolher uma versão LTS (Long-Term Support) é a opção mais segura.
Se o seu projeto especifica uma versão, sempre priorize esse requisito.