javac não funciona no prompt de comando do Windows


132

Estou tentando usar javaccom o prompt de comando do Windows, mas não está funcionando.

Após adicionar o diretório "C:\Program Files\Java\jdk1.6.0_16\bin\"ao final da PATHvariável de ambiente, o javacomando funciona bem, mas usar javacme dá o seguinte erro:

'javac' não é reconhecido como um comando interno ou externo, programa operável ou arquivo em lote.


Respostas:


162

Se você o adicionou no painel de controle enquanto o prompt de comando estava aberto, isso não afetará o prompt de comando atual. Você precisará sair e reabrir ou simplesmente:

set "path=%path%;c:\program files\java\jdk1.6.0_16\bin"

A título de verificação, execute:

echo %path%

no prompt de comando e deixe-nos saber o que é.

Caso contrário, verifique se não é um javac nesse diretório, tentando:

"c:\program files\java\jdk1.6.0_16\bin\javac.exe"

no prompt de comando. Você também pode dizer qual executável (se houver) está sendo usado com o comando:

for %i in (javac.exe) do @echo %~$PATH:i

Esse é um truque interessante, semelhante aos comandos whiche / ou whenceem alguns sistemas operacionais do tipo UNIX.


11
ah sim, tudo o que eu precisava fazer era reabrir o prompt de comando e funcionou bem, obrigado!
Domenic

1
+1. O "for% i in (java.exe) do @echo% ~ $ PATH: i" acabou de salvar meu dia. Eu sou apenas um usuário ocasional do Windows e simplesmente não sabia que poderia haver outro java.exe oculto em c: \ windows \ system :)
david a.

1
O comando set path acima não funciona para mim no Windows 7. Eu tive que usar o caminho set = "% path%; c: \ arquivos de programas \ java \ jdk1.6.0_16 \ bin. Isso é sem aspas! Não estou familiarizado . com janelas comando linha, mas parece que as aspas são preservados para tê-los na pasta% path% irá torná-lo totalmente inutilizável.
user716468

@ user716468, existe uma forma de fazer interface gráfica no Windows em vez de na linha de comandos. Se você estiver no Windows 7, digite var na pesquisa do menu Iniciar e clique em Editar variáveis ​​de ambiente. Se você estiver no Windows XP, clique com o botão direito do mouse em Meu computador, clique nas propriedades, vá para a guia Avançado e clique no botão Variáveis ​​de ambiente na parte inferior. Lá você pode encontrar duas caixas de listagem. Descubra o nome PATH na caixa de listagem inferior e clique em Editar. Agora anexe o caminho ao seu JDK precedido por ponto e vírgula. Você Terminou!
Fz_salam 21/09/2013

há também um "onde" de comando no Windows recentes comandar linhas
x29a

87

O sistema operacional Windows pesquisa o diretório atual e os diretórios listados na variável de ambiente PATH em busca de programas executáveis. Os programas do JDK (como o compilador Java javac.exe e o Java runtime java.exe) residem no diretório "\ bin" (onde denota o diretório instalado do JDK, por exemplo, C: \ Arquivos de Programas \ Java \ jdk1.8.0_xx). Você precisa incluir o diretório "\ bin" no PATH.

Para editar a variável de ambiente PATH no Windows XP / Vista / 7/8:

  1. Painel de controle ⇒ Sistema ⇒ Configurações avançadas do sistema

  2. Alterne para a guia "Avançado" ⇒ Variáveis ​​de ambiente

  3. Em "Variáveis ​​do sistema", role para baixo para selecionar "CAMINHO" ⇒ Editar

((agora leia as 3 vezes a seguir antes de continuar, NÃO EXISTEM )

No campo "Valor variável", insira "c: \ Arquivos de programas \ Java \ jdk1.8.0_xx \ bin" (Substitua xx pelo número da atualização e verifique se esse é o diretório binário do seu JDK !!!) À FRENTE de todas as existentes diretórios, seguidos por um ponto-e-vírgula (;) que separa o diretório binário do JDK do restante dos diretórios existentes. NÃO DELETE nenhuma entrada existente; caso contrário, alguns aplicativos existentes podem não ser executados.

Variable name  : PATH
Variable value : c:\Program Files\Java\jdk1.8.0_xx\bin;[existing entries...]

Captura de tela


Para a Etapa 4. Descobri que tinha que selecionar não jre <número>, mas jdk <número>. Então tudo o resto funcionou bem.
Morgan Kenyon

Limpo e claro! Melhor resposta. Trabalhou para mim.
M_R_K

No meu caso, para a etapa 4, abri o jdk. Em essência, eu tinha isso para PATH: C: \ Arquivos de Programas \ Java \ jdk1.7.0_67 \ bin. O javac.exe não estava no jre, mas no jdk.
sedeh 9/10/14

Works for Me :)
RAJESH KUMAR ARUMUGAM

34

Após um longo Google, soube que o javac.exe estará dentro do JDK (C: \ Arquivos de Programas \ Java \ jdk (número da versão) \ bin) e não dentro do JRE (C: \ Arquivos de Programas (x86) \ Java \ jre7 \ bin) "O JRE não vem com um compilador. Ele (JRE) é simplesmente um ambiente de tempo de execução java. O que você precisa é do kit de desenvolvimento Java." para usar o compilador javac

O javac não funcionará se você estiver apontando o bin dentro do jre

Para usar o javac no cmd, o JDK deve estar instalado no seu sistema ...

Para o caminho javac

caminho = C: \ Arquivos de programas (x86) \ Java \ jre7 \ bin isto está errado

caminho = C: \ Arquivos de programas \ Java \ jdk (número da versão) \ bin isso está correto

Verifique se "javac.exe" está dentro de "C: \ Arquivos de Programas \ Java \ jdk (número da versão) \ bin"

Não se confunda com JRE e JDK, ambos são totalmente diferentes

se você não tiver o JDK pls, faça o download neste link

https://jdk.java.net/

ou

http://www.oracle.com/technetwork/java/javase/downloads/index.html

encadeamento de referência para JDK VS JRE Qual é a diferença entre JDK e JRE?


6

Sei que esse pode não ser o seu erro específico, mas já tive um espaço de liderança no meu caminho e o java funcionaria, mas o javac não.

Quanto vale a pena, ofereço o sábio conselho: "Examine atentamente o seu caminho".


5

Experimente as soluções aqui: http://techdem.centerkey.com/2009/05/javahome-command-script.html

Elas são muito mais robustas para mudar - como quando você atualiza o JDK ou JRE, pois não há caminho codificado.

A solução rápida (se você não quiser ler o blog) é

C:\>for /d %i in ("\Program Files\Java\jdk*") do set JAVA_HOME=%i
C:\>set PATH=%PATH%;%JAVA_HOME%

Você pode adicionar essas linhas a um script de inicialização / login.


2
Para chamar o javac como esse, tive que usar "set PATH =% PATH%;% JAVA_HOME% \ bin" (observe o \ bin adicionado).
user31389

4

Eu só tinha que fazer isso para que isso funcionasse no Windows 7 64.

Abra um prompt de comando (cmd.exe) e digite:

set CLASSPATH=C:\Program Files\Java\jdk1.7.0_01\bin

Certifique-se de reabrir todo o prompt de comando em execução do Windows para atualizar também a variável de ambiente.


1
Acho que desarmar o caminho de classe é melhor aqui. Eu não usaria a variável CLASSPATH, especialmente não no Windows, onde é global e afeta vários JREs ...
Eckes

4

Tudo bem, isso pode não ser sempre, mas muitos de nós cometemos esse erro no passado e poucos deles ainda não sabem disso, ou seja, toda vez que você anexa um caminho (qualquer caminho) de qualquer variável de ambiente, você provavelmente atingirá a barra de espaço logo após o "ponto-e-vírgula" (como faria normalmente após o "período" ao digitar em um editor).

Isso criará um espaço inicial no caminho, por exemplo, "C: \ Arquivos de Programas \ Java \ jdk1.6.0 \ bin" e, portanto, "javac.exe" não será encontrado pelo sistema.


2

Altere a pasta "jdk1.7.0_45" "jdk1_7_0_60" e atualize o caminho no ambiente do Windows. Caso contrário, o caminho ignorará o ponto na frente, que significa arquivo oculto, para que a pasta não seja exibida nas seqüências de caracteres PATH.


0

"; C: \ Arquivos de programas \ Java \ jdk1.6.0 \ bin" em algum momento, você pode esquecer de colocar ponto e vírgula no último caminho existente.


0

Eu enfrentei exatamente o mesmo problema que o java funcionaria, mas o javac não funcionaria em um prompt do cmd no Windows 8.

O problema ocorreu porque eu esqueci de remover '>'no final do nome do caminho, ou seja, era assim:

C:\Program Files\Java\jdk*\bin>

onde deveria ser assim:

C:\Program Files\Java\jdk*\bin

0

O caminho será definido apenas para a conta de administrador. Portanto, é importante iniciar o prompt de comando como administrador, se você ainda não estiver.


0

Certifique-se de não permitir espaços (espaço em branco) entre os caminhos na variável Path. Meu problema era que eu tinha espaço em branco e acredito que o Windows o tratou como um NULL e não leu meu caminho para Java.


0

Eu estava tendo o mesmo problema postado neste título. Java funcionaria, mas javacnão no prompt de comando do Windows ( cmd.exe).

Para mim, foi simplesmente porque eu havia colocado um espaço ao adicionar C:\Program Files\Java\jdk1.8.0\binao final da minha %PATH%variável de ambiente.
Remova o espaço entre o ;e o próximo caminho do arquivo.


0

Eu aprecio que esta seja uma pergunta antiga agora, mas minha solução não foi uma resposta aqui, então poste-a no caso de alguém tentar o resto.

No meu caso, uma instalação anterior do Java JRE (em ProgramData / Oracle / Java) tinha uma variável de caminho no topo da minha lista de variáveis ​​de caminho. O conteúdo desse caminho "Oracle" tinha um java.exe, mas não um javac.exe. Adicionei meu caminho completo do JDK ao topo da lista de variáveis ​​de caminho, à frente do caminho "Oracle", e ele pegou javac.exe e java.


0
for /d %i in ("\Program Files\Java\jdk*") do set JAVA_HOME=%i
set JAVA_HOME

esta solução funcionou para mim


Sugiro adicionar mais anotações à sua resposta diretamente, em vez de apenas fornecer um link: o link pode ficar quebrado. Atenciosamente
YakovL

-3

Quando tentei fazer o .java para .class o comando Javac não funcionou. Eu consegui trabalhar indo para C: \ Arquivos de Programas (x86) \ Java \ jdk1.7.0_04 \ bin e quando eu estava nesse diretório, digitei Javac.exe C \ Test \ test.java e fiz a classe com isso tática. Experimente isso.


-7

Dê-o como "C: \ Arquivos de Programas \ Java \ jdk1.6.0_16 \ bin". Remova a barra invertida que funcionará


2
Eu não acho isso correto. Eu posso definir meu caminho como nada, mas "C: \ Arquivos de Programas \ Java \ jdk1.6.0_16 \ bin \" (com barra à direita) e ainda funciona bem.
paxdiablo
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.