GUJ Discussões   :   últimos tópicos   |   categorias   |   GUJ Respostas

Como devo configurar a variável de ambiente PATH no Windows 7


#1

Eu estou usando o jdk1.8.0_121 e o jre1.8.0_121 configurei da seguinte maneira, porém não consigo executar nenhum dos exemplos que vieram com o Livro JAVA Como Programar do DEITEL.

JAVA_HOME = C:\Program Files\Java\jdk1.8.0_121\bin;C:\Program Files\Java\jdk1.8.0_121\jre\bin;C:\Program Files\Java\jre1.8.0_121\bin;


PATH = …;C:\Program Files\Java\jdk1.8.0_121\bin;C:\Program Files\Java\jdk1.8.0_121\jre\bin;C:\Program Files\Java\jre1.8.0_121\bin

A na variável path quer dizer que tem outras configurações de outros programas que não são o JAVA

Ao tentar executar um dos exemplos via prompt de comando java Painter.class recebo a seguinte mensagem de erro: Não foi possível localizar nem carregar a classe principal Painter.class.

Isto porque estou na pasta do executável.


#2

Opa Tadeu, tudo certo?

Cara, sobre as variáveis de ambiente, não posso te ajudar porque não sei nem pra onde vai no Windows :laughing: Logo alguém vem e te responde.

Sobre compilar/executar um programa java, seguinte:

Quando você chama o programa javac (Java Compiler), você tem que dizer pra ele o que você quer que compile. Se você tá na pasta C:\Projeto e ali dentro tem um arquivo chamado Painter.java (código fonte Java), você pode fazer o seguinte:

javac Painter.java

Esse comando vai compilar teu código fonte e jogar a saída no arquivo Painter.class. Se a classe Painter, dentro do arquivo Painter.java possui um método com essa cara,

public static void main(String[] args)

Quer dizer que você pode executar esse método a partir da linha de comando. Para fazer isso, você vai utilizar outro programa diferente do compilador javac, que é o programa java. A entrada para esse programa java, diferentemente do javac que consome arquivos .java, é o nome da classe que tem o método main!

No nosso caso, essa classe é o Painter. Então, na pasta onde se encontra o arquivo compilado Painter.class, você vai digitar o seguinte no terminal:

java Painter

Repare que não é nem Painter.class nem Painter.java, só Painter (o nome da classe que tem o main).

Quer saber como é que o programa java encontra o arquivo Painter.class se você só digitou Painter? Continue lendo! (A partir daqui é só explicação).

Quando você chama o programa java, existe um conceito chamado de classpath. O que é isso? O classpath é uma espécie de lista de diretórios e/ou arquivos, que estarão disponíveis para o programa java quando você o chama no terminal. Nesses diretórios, e só nesses diretórios, o programa java vai poder procurar e encontrar arquivos .class e entender as classes que tem dentro deles. Tá sentindo?

Por padrão, o conteúdo do classpath contem o seu diretório atual! Por isso, quando você digita java Painter, o programa java vai procurar no classpath, se existe uma classe chamada Painter com um método main implementado. Nesse caso, como você está no diretório que contem o arquivo Painter.class, ele vai ser encontrado e executado com sucesso. Você pode adicionar mais diretórios no classpath se quiser, assim:

java -cp C:\minhaBiblioteca;C:\minhaOutraBiblioteca Painter

Dessa forma, tudo que estiver nessas duas pastas, minhaBiblioteca e minhaOutraBiblioteca vão estar disponíveis para o java e, consequentemente, para tua classe Painter.

Existe um mundo de conceitos por trás de classpath, compilador e runtime Java, essa foi só uma brevíssima introdução. Espero ter sido claro!