Estou com um erro ao tentar compilar programas Java.
Estou no Windows (esse é um problema específico do Windows) e tenho o JDK mais recente instalado.
Eu tentei uma solução envolvendo a PATH
variável, mas o erro persiste.
Saída do console:
C:\>set path=C:Program Files (x86)\Java\jdk1.7.0\bin
C:\>javac Hello.java
'javac' is not recognized as an internal or external command,
operable program or batch file.
java
path
environment-variables
command-prompt
javac
user987137
fonte
fonte
Respostas:
TL; DR
Para leitores experientes:
C:\Program Files\Java\jdkxxxx\bin\
PATH
. Remova os caminhos Java antigos.PATH
.JAVA_HOME
.Bem-vinda!
Você encontrou um dos problemas técnicos mais notórios enfrentados pelos iniciantes em Java: o
'xyz' is not recognized as an internal or external command...
mensagem de erro.Em poucas palavras, você não instalou o Java corretamente . A finalização da instalação do Java no Windows requer algumas etapas manuais. Você sempre deve executar estas etapas após instalar o Java, inclusive após atualizar o JDK.
Variáveis de ambiente e
PATH
(Se você já entendeu isso, fique à vontade para pular as próximas três seções.)
Quando você executa
javac HelloWorld.java
, o cmd deve determinar ondejavac.exe
está localizado. Isso é realizado comPATH
uma variável de ambiente.Uma variável de ambiente é um par de valor-chave especial (por exemplo
windir=C:\WINDOWS
). A maioria veio com o sistema operacional e alguns são necessários para o funcionamento adequado do sistema. Uma lista deles é passada para todos os programas (incluindo o cmd) quando é iniciado. No Windows , existem dois tipos : variáveis de ambiente do usuário e variáveis de ambiente do sistema .Você pode ver suas variáveis de ambiente assim:
A variável mais importante é
PATH
. É uma lista de caminhos, separados por;
. Quando um comando é inserido no cmd, cada diretório da lista será verificado em busca de um executável correspondente.No meu computador,
PATH
é:Quando você executa
javac HelloWorld.java
, o cmd, ao perceber quejavac
não é um comando interno , pesquisa o sistemaPATH
seguido pelo usuárioPATH
. Ele entra mecanicamente cada diretório na lista, e verifica sejavac.com
,javac.exe
,javac.bat
, etc. está presente. Quando encontrajavac
, executa. Quando não, ele imprime'javac' is not recognized as an internal or external command, operable program or batch file.
Você deve adicionar o diretório executável Java ao
PATH
.JDK vs. JRE
(Se você já entendeu isso, sinta-se à vontade para pular esta seção.)
Ao baixar Java, você pode escolher entre:
java
mas nãojavac
.java
ejavac
, juntamente com um host de outras ferramentas de desenvolvimento. O JDK é um superconjunto do JRE.Você deve certificar-se de ter instalado o JDK . Se você instalou apenas o JRE, não poderá executar
javac
porque não possui uma instalação do compilador Java no disco rígido. Verifique sua lista de programas do Windows e verifique se o nome do pacote Java inclui as palavras "Kit de Desenvolvimento".Não use
set
(Se você não estava planejando fazer isso de qualquer maneira, fique à vontade para pular esta seção.)
Várias outras respostas recomendam a execução de algumas variações de:
Não faça isso. Existem vários problemas importantes com esse comando:
PATH
e substitui-lo com o caminho Java. Após executar este comando, você poderá encontrar vários outros comandos que não estão funcionando.C:\Program Files\Java\jdk1.7.0_09\bin
- você quase definitivamente possui uma versão mais recente do JDK, que teria um caminho diferente.PATH
se aplica apenas à sessão atual do cmd. Você precisará digitar novamente oset
comando sempre que abrir o prompt de comando.Os pontos 1 e 2 podem ser resolvidos com esta versão um pouco melhor:
Mas é apenas uma má ideia em geral.
Encontre o caminho do Java
O caminho certo começa com a localização de onde você instalou o Java. Isso depende de como você instalou o Java.
Instalador Exe
Você instalou o Java executando um programa de instalação. O instalador da Oracle coloca as versões do Java em
C:\Program Files\Java\
(ouC:\Program Files (x86)\Java\
). Com o Explorador de Arquivos ou o Prompt de Comando, navegue para esse diretório.Cada subpasta representa uma versão do Java. Se houver apenas um, você o encontrou. Caso contrário, escolha o que se parece com a versão mais recente. Verifique se o nome da pasta começa com
jdk
(ao contrário dejre
). Digite o diretórioEm seguida, insira o
bin
diretório disso.Agora você está no diretório correto. Copie o caminho. Se no File Explorer, clique na barra de endereço. Se no prompt de comando, copie o prompt.
O caminho Java resultante deve estar na forma de (sem aspas):
Arquivo Zip
Você baixou um .zip contendo o JDK. Extraia-o para algum lugar aleatório onde não atrapalhe;
C:\Java\
é uma escolha aceitável.Em seguida, localize a
bin
pasta em algum lugar dentro dela.Agora você está no diretório correto. Copie seu caminho. Este é o caminho do Java.
Lembre-se de nunca mover a pasta, pois isso invalidaria o caminho.
Abra a caixa de diálogo de configurações
Essa é a caixa de diálogo para editar
PATH
. Existem várias maneiras de acessar esse diálogo, dependendo da versão do Windows, das configurações da interface do usuário e de como está confusa a configuração do sistema.Experimente alguns destes:
control sysdm.cpl,,3
SystemPropertiesAdvanced.exe
» Variáveis de ambienteControl Panel\System and Security\System
» Configurações avançadas do sistema (extrema esquerda, na barra lateral) »Variáveis de ambienteQualquer uma dessas opções deve levá-lo à caixa de diálogo de configurações correta.
Se você estiver no Windows 10, a Microsoft o abençoou com uma nova interface de usuário sofisticada para editar
PATH
. Caso contrário, você veráPATH
toda a sua glória incrustada em ponto e vírgula, espremida em uma caixa de texto de linha única. Faça o seu melhor para fazer as edições necessárias sem interromper o seu sistema.Limpar \ limpo
PATH
Olhe para
PATH
. Você quase definitivamente tem duasPATH
variáveis (por causa das variáveis de ambiente do usuário vs. do sistema). Você precisa olhar para os dois.Verifique outros caminhos Java e remova-os. Sua existência pode causar todo tipo de conflito. (Por exemplo, se você tiver JRE 8 e JDK 11
PATH
, nessa ordem,javac
chamará o compilador Java 11, que criará.class
arquivos da versão 55 , masjava
chamará a Java 8 JVM, que suporta apenas a versão 52 e você encontrará erros de versão não suportados e não poderá compilar e executar nenhum programa.) Contorne esses problemas, certificando-se de que você tenha apenas um caminho JavaPATH
. E enquanto você está nisso, você também pode desinstalar versões antigas do Java . E lembre-se de que você não precisa ter um JDK e um JRE.Se você tiver
C:\ProgramData\Oracle\Java\javapath
, remova-o também . A Oracle pretendia resolver o problema dos caminhos Java quebrados após as atualizações, criando um link simbólico que sempre apontava para a instalação mais recente do Java. Infelizmente, muitas vezes acaba apontando para o local errado ou simplesmente não está funcionando . É melhor remover esta entrada e gerenciar manualmente o caminho Java.Agora também é uma boa oportunidade para executar tarefas domésticas gerais
PATH
. Se você possui caminhos relacionados ao software que não estão mais instalados no seu PC, é possível removê-los. Você também pode embaralhar a ordem dos caminhos (se você se importa com coisas assim).adicionar à
PATH
Agora pegue o caminho Java que você encontrou há três etapas e coloque-o no sistema
PATH
.Não deve importar para onde vai o novo caminho na lista; colocá-lo no final é uma ótima escolha.
Se você estiver usando a interface do usuário anterior ao Windows 10, verifique se colocou os pontos e vírgulas corretamente. Deve haver exatamente um separando todos os caminhos na lista.
Realmente não há muito mais a dizer aqui. Basta adicionar o caminho
PATH
e clicar em OK.Conjunto
JAVA_HOME
Enquanto você está nisso, você também pode definir
JAVA_HOME
. Essa é outra variável de ambiente que também deve conter o caminho Java. Muitos programas Java e não Java, incluindo os populares sistemas de compilação Java Maven e Gradle , gerarão erros se não estiverem configurados corretamente.Se
JAVA_HOME
não existir, crie-o como uma nova variável de ambiente do sistema. Defina-o como o caminho do diretório Java sem obin/
diretório, ou sejaC:\Program Files\Java\jdkxxxx\
.Lembre-se de editar
JAVA_HOME
depois de atualizar o Java também.Feche e abra novamente o prompt de comando
Embora você tenha modificado
PATH
, todos os programas em execução, incluindo o cmd, apenas veem o antigoPATH
. Isso ocorre porque a lista de todas as variáveis de ambiente é copiada apenas em um programa quando ele começa a ser executado; depois disso, ele somente consulta a cópia em cache.Não há uma boa maneira de atualizar as variáveis de ambiente do cmd , basta fechar o prompt de comando e abri-lo novamente. Se você estiver usando um IDE, feche e abra-o novamente.
Veja também
fonte
tente isso .. eu também, mas agora ele resolveu no XP ..
fonte
Você digitou errado o
set
comando - depois perdeu a barra invertidaC:
. Deveria ser:fonte
C:\Program Files (x86)\Java\jdk1.7.0
? Se sim, o que acontece se você fizercd C:\Program Files (x86)\Java\jdk1.7.0\bin
e depoisjavac -version
?Execute o seguinte no prompt de comando:
set Path="C:\Program Files\Java\jdk1.7.0_09\bin"
ouset PATH="C:\Program Files\Java\jdk1.7.0_09\bin"
Eu tentei isso e funciona bem.
fonte
Se o comando java estiver funcionando e obtendo um problema com o javac. Em seguida, verifique primeiro o arquivo javac.exe do diretório bin do jdk. Se o arquivo javac.exe existir, defina
JAVA_HOME
como variável do sistema.fonte
Verifique suas variáveis de ambiente.
No meu caso, eu tinha JAVA_HOME definido nas variáveis do sistema , bem como nas variáveis da minha conta de usuário , e o último foi definido para uma versão incorreta do Java . Eu também tive o mesmo problema com a variável Path.
Após excluir JAVA_HOME das variáveis da minha conta de usuário e remover o caminho errado da variável Path, funcionou corretamente.
fonte