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 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!