quarta-feira, 10 de fevereiro de 2010

JAVA_HOME, CLASSPATH e PATH. O que são, para que servem e como configura-los

Algumas vezes quando estamos iniciando nossos estudos sobre JAVA e seu complexo universo, nós encontramos algumas apostilas e livros que nos “ensinam” a programar sem o uso de IDE. Essas apostilas e livros nos levam a um prompt do DOS e pedem para compilarmos o nosso “primeiro programa” com uma linha de comando semelhante a essa:

javac HelloWorld.java

Normalmente nós nem nos damos conta que existe esse comando e outros inúmeros , porque quando trabalhamos com JAVA utilizando alguma IDE como o Eclipse, Netbeans ou Jcreator e elas os utilizam “por baixo dos panos”. Mas o que faria se caso ocorresse algum problema e todos os códigos que mande compilar pela IDE não compile (isso é, gerar o .class)? E se esse projeto fosse algo urgente e não existe o tempo hábil para ficar procurando a solução ou baixando uma nova IDE? E se fosse teu trabalho de conclusão de curso e tu precise urgente testar para ver se está tudo certo? Sei que isso se parece muito com alguma das leis de Murphy , mas eu mesmo já vivenciei situações como essas em que precisei urgente compilar e testar as classe, porém estava preso à IDE. Pensando nisso e em alguns outros fatores em que a ciência holística da informática nos proporciona ( ah, tu também aprendeu que a informática faz parte das exatas? É que tu ainda não dependeu completamente dela) irei falar sobre alguns componentes importantes do JDK, o que são JAVA_HOME, CLASSPATH E PATH e como configura-los.

O que são????

Quando se instala o JDK ( Java Development Kit) muitas pastas são criadas com uma infinidade de arquivos. Entre esses arquivos alguns são especiais e são usados para que as classes possam ser compiladas (isto é, gerar o bytecode que é o .class) e executadas. Normalmente ao instalar as IDEs o caminho em que se encontra esses arquivos são criados de forma automática para que quando se clique em RUN (rodar) o código desenvolvido compile e apresente o resultado desejado (ou não né??heheeh). Porém a pergunta é: Quais são esses arquivos, onde se encontram e para que servem?

Quais são os arquivos?

Esses arquivos são o java e javac e se localizam na pasta bin do diretório em que foi instalado o JDK. Junto com eles existem mais 47 arquivos executáveis ( no JSE 6). Abaixo explico um pouco sobre o arquivo java e javac e aproveito para apresentar alguns outros que considero importante e que estão localizados nessa pasta.

java: É executável do java em si. Tem como função lançar a aplicação java, isto é, iniciar o JRE, carregar a classe especificada na JVM e invocar ela no método main. Se escrever java no prompt do DOS irá ver uma imensidão de linha com os argumentos que ele suporta.

javac: É o compilador que transforma o .java em .class. Sem ele não seria possível criar uma aplicação java.

javadoc: É o responsável por gerar os comentários localizados no código fonte e apresentar no momento da programação. Pode-se gerar o próprio javadoc utilizando algumas linhas de comentários específicas (/** */) ou ver os existentes para os diversos métodos e classes existentes na linguagem. Para testar escreva na IDE a palavra String e deixe o mouse em cima para verificar o javadoc dela.

jconsole: Serve para monitorar e gerenciar os recursos da aplicação java tanto na JVM local como remota. Muito útil para verificação de problemas e rendimento.

policytool: Cria e modifica politicas internas de arquivos de configuração que foram definidos na instalação do JDK.

jrumscript: É um shell com linha de comando para se escrever scipts. Por padrão ele utiliza o javascript , mas pode ser alterado para outras linguagens.

jvisualvm: Apresenta de forma gráfica as informações que estão rodando na JVM.

Caso tenha interesse nos demais executaveis, de uma olhada no site dedocumentação da sun ou na lista de programas instalados na JDK 6 – Update 16.

Existem também alguns .jars ( na verdade 4) que são utilizados. Esses se encontram na pasta lib e jre/lib do JDK (por favor, não se confunda com a pasta JRE para rodar aplicativos java.) Se lembra das funções do executável java que se localiza na pasta bin do JDK? Pois é, esse cara quando executado ( e sempre é executado porque em caso contrário não existiria o JAVA rodando na tua maquina) inicia a JVM e a JVM por sua vez procura e carrega alguns .jars. Entre esses .jars que são carregados estão os da pasta lib e jre/lib do JDK. Esse assunto da JVM é muito profundo, então caso tenham interesse postem nos comentários que no próximo post eu escrevo sobre isso ou acesse o site da sun que fala sobre o assunto.

Agora que sabemos algumas coisas do funcionamento do JDK, vou explicar o que é o JAVA_HOME, CLASSPATH e PATH, para o que servem e como os montar.

JAVA_HOME: JAVA_HOME, como o nome já diz é a CASA_JAVA (tradução estranha!). É nele que se indica onde que foi instalado o JDK (casa == morada == local em que “MORA” o JDK). Por exemplo: o meu JAVA_HOME é C:\Program Files\Java\jdk1.6.0_17 . Muitas vezes as pessoas pensam que o JAVA_HOME é onde está instalado o JRE. NÃOOOO É ISSO! Quando se pensa JAVA_HOME,CLASSPATH e PATH se usa o JDK e não o JRE. Esqueça o JRE!!!!!

CLASSPATH: Ele significa caminho de classe. É onde se indica os .jars que estão localizados na pasta lib e jre/lib do JDK.

PATH: Ele significa caminho. Nele se indica onde está os executáveis (aquela pasta bin que comentei antes) do JDK. Em meu caso é C:\Program Files\Java\jdk1.6.0_17\bin.

Como criar o JAVA_HOME, CLASSPATH e PATH?

Para se criar o JAVA_HOME, CLASPATH e PATH é necessário acessar as variáveis de ambiente do windows. Para isso existem diversas maneiras. A partir do Windows XP pode se utilizar a seguinte combinação de tecla de atalhos: Bandeira do windows (aquela ao lado do alt esquerdo) + pause. Irá aparecer uma janela e entre as opções aparecerá as configurações avançadas do sistema. Acessando ela irá aparecer as propriedades do sistema (figura 1). Acesse a aba avançado e clique no botão variáveis de ambiente (figura 2).

fig1Figura 1 – Propriedades do sistema.

fig2Figura 2 – Tela com as variáveis de ambiente.

É nessa tela que tu irás criar o JAVA_HOME, CLASSPATH e editar o PATH adicionando as informações desejadas.

MUITA ATENÇÃO NESSA HORA!!!!!

Esse ponto é crucial!!!! Na figura dois, pode ser visto dois tipos de variáveis e respectivos botões. Esqueça por completo os botões NOVA, EDITAR e EXCLUIRda caixa das variáveis de usuário e clique em NOVA na variável do sistema(figura 3).

fig2novaFigura 3: Utilize as variáveis do sistema e não variaveis do usuário.

Clicando em nova irá aparecer a seguinte tela (figura 4).

fig3Figura 4: Adicionando nova variável de sistema.

Nessa tela iremos adicionar o JAVA_HOME e o CLASSPATH.

Atenção de novo!

O nome da variável irá receber o nome JAVA_HOME e o valor da variável será o endereço que foi instalado o JDK. Em meu caso ele foi instalado em c:\program files\java\jdk1.6.0_17 (figura 5). Adicione os valores e clique em OK para validar as informações setadas.

fig_JAVA_HOMEFigura 5: Adicionando JAVA_HOME.

Adicionado o JAVA_HOME chegou a vez de criarmos o CLASSPATH. Esse ai será um pouco trabalhoso por se tratar de diversos arquivos .jars. A lógica para criação é parecida com a das figuras 3, 4 e 5, porém mudando apenas o nome e o valor da variável.

fig_CLASSPATHfigura 6: Adicionando CLASSPATH.

Agora que temos a JAVA_HOME não é preciso colocar todo o caminho do JDK para a pasta lib e jre/lib, isto é, c:\program files\java\jdk1.6.0_17\lib e c:\program files\java\jdk1.6.0_17\jre\lib. O que precisa-se é indicar a variável de sistema JAVA_HOME e a pasta desejada (figura 6). A seguir como que deve ficar as informações do valor de variável.

.;%JAVA_HOME%\lib;%JAVA_HOME%\lib\tools.jar;%JAVA_HOME%\lib\dt.jar;%JAVA_HOME%\lib\htmlconverter.jar;%JAVA_HOME%\jre\lib;%JAVA_HOME%\jre\lib\rt.jar

Escreva exatamente como está acima ( inclusive com o .; no inicio, as %% entre o JAVA_HOME e os ; antes de escrever o novo caminho) ou apenas copie e cole no valor da variável(muito mais fácil né :) ).

Imagino que já tenhas observado que nas variáveis de sistema existe uma variável com o nome PATH. Selecione ela e clique em EDITAR ou de um duplo clique em cima (figura 7). É muito improvável que não exista o PATH nas variáveis do sistema, mas caso não, crie ela.

fig2editarFigura 7: Editando o PATH.

Dentro do PATH devemos adicionar a exata linha de comando: ;%JAVA_HOME%\bin . O PATH editado deverá ficar igual a imagem abaixo.(figura 8). Apenas para lembrar, o igual que eu digo é a linha de comando (;%JAVA_HOME%\bin ) e não o que tem antes dela.

fig_PATHfigura 8: Adicionando o valor da variável no PATH.

Feito isso clique Ok para fechar todas as caixas abertas e as validar e acione um prompt do DOS. Dentro dele escreva os comandos que comentei no meio do post (javac, jconsole, jpolicytool, jvisualvm). Caso funcione a aplicação é que está tudo configurado corretamente, caso contrário, verifique se adicionou corretamente o endereço do JAVA_HOME ou se não se esqueceu de algum detalhe como ponto e virgula.

18 comentários:

Unknown disse...

cara esse tutorial é incrivel.simples pratico e rapido.obg!!!! porém só tive um problema quando faço um programa em java na hora de compilar o mesmo nao consegue encontrar o dito arquivo.qualquer ajuda sera muito mais q bem-vinda.um obrigado desde ja.

UMC disse...

Olá Batista você está tentando executar o comando na própria pasta no .JAVA? .
Na mesma pasta você coloca apenas o nome do arquivo!
Em outro lugar você terá que colocar o caminho do arquivo!
Mais é recomendado que seja na mesma pasta!

Obrigado pela visita e volte sempre!

Unknown disse...

Tentei fazer isso, e o comando javac agora ta funcionando mas o java ainda aparece que não é reconhecido como comando... alguem sabe onde eu posso ter errado?

UMC disse...

o que acontece quando digita esse comando -> "java -version" sem as aspas ?
Digitem esse comando para ver o resultado -> "echo %path%" (sem as aspas) ele vai imprimir a sua variável "Path"


Obrigado pela visita e volte sempre!

Unknown disse...

Segui o tutorial, mas ainda estou com problema, não é reconhecido como comando interno ou... Já não sei o que fazer.

UMC disse...

Olá Nikolas Obrigado pela visita e volte sempre!
Siga essa configuração
JAVA_HOME
C:\Arquivos de programas\Java\jdk1.6.0_16
Path
%SystemRoot%\system32;%SystemRoot%;%SystemRoot%\System32\Wbem;%JAVA_HOME%\bin

Lembre-se no JAVA_HOME não se coloca a pasta "bin" apenas o caminho onde ela está!
E no Path eu acrescentei o ";%JAVA_HOME%\bin" no final!

Qualquer coisa pode perguntar!

Abraço!
www.umcastec.com
UMC

Contato
umcastec@gmail.com
umcastec@hotmail.com

Ramon Emanoel disse...

Deu certo, segui do jeito que ta ai
e funcionou.

Unknown disse...

Segui todo o tutorial, porém no Prompt não aparece Javac qdo mando rodar, dentroapasta em que salvei o sistema.Meu sistema é windows 7 64 bits, poém tive que instalar a versão 32 bits tbém, porque acusou que meu navegador é 32 bits.
o que mais pode estar errado?

Ricardo Massao disse...

Dica, ao invés de usar :
C:\Arquivos de programas\Java\jdk1.6.0_21
Tente colocar :
C:\Arquiv~1\Java\jdk1.6.0_21
Não sei ao certo o pq de alguns prompts de comando do Windows não aceitam o espaço.
Ou pode-se Usar :
"C:\Arquivos de programas\Java\jdk1.6.0_21"
Porém as "" podem gerar erros em scripts Batch (arquivos .bat).
A maneira mais segura é usar Arquiv~1 mesmo.

Abraços.

*DaRa* disse...

Muito ótimo! :) rs
Deu certinho. obrigada.

Dark Sirius disse...

o unico comando que não funciona é o lpolicytool, não sei porque? os outros todos funcionam.

UMC disse...

Olá Raquel obirgado pela sua visita.
O comando certo é "policytool"
para saber mais sobre o comando no link:
http://download.oracle.com/javase/1.4.2/docs/tooldocs/windows/policytool.html

Abraço e volte sempre

Anônimo disse...

muito bom, foi a maneira mais pratica q vi vlw

skyke disse...

amigos meu sistema eh windows 7 64 bits; faço tudo que tah no site foço o teste e da ok; mas quando digito javac e o nome codigo fonte.java aparece assim: file not found.
por favor se alguem puder me ajudar eu agradeço.

UMC disse...

skyke, esse erro ocorre pq vc não executou o "javac" dentro do diretório onde está o seu "arquivo.java"

Qualquer coisa comenta aí.
Abraço.

Unknown disse...

Legal o post, mas gostaria de deixar uma dica, o texto estando pequeno deste jeito corre os leitores, dói as vistas de tentar ler certas linhas, aconselharia a aumentar a letra e dividir este conteúdo amplo em várias páginas, com uma formatação da cor da letra mais forte. Abraço e obrigado pelo post.

Unknown disse...

Legal o post, mas gostaria de deixar uma dica, o texto estando pequeno deste jeito corre os leitores, dói as vistas de tentar ler certas linhas, aconselharia a aumentar a letra e dividir este conteúdo amplo em várias páginas, com uma formatação da cor da letra mais forte. Abraço e obrigado pelo post.

Unknown disse...

o javac funciona mas nao consigo executar o arquivo


E:\Projects\Java\ExBibliaJava10\src\HelloWord>javac Figura2_1.java

E:\Projects\Java\ExBibliaJava10\src\HelloWord>java Figura2_1
Erro: Não foi possível localizar nem carregar a classe principal Figura2_1