Skip to content

Instantly share code, notes, and snippets.

@maisonsouza
Last active December 14, 2017 17:37
Show Gist options
  • Save maisonsouza/16095ec3b31c1cbb4b9b98abc58ec6b9 to your computer and use it in GitHub Desktop.
Save maisonsouza/16095ec3b31c1cbb4b9b98abc58ec6b9 to your computer and use it in GitHub Desktop.
Configuração java
<html>
## Executando script de todo lugar: PATH
No capítulo anterior nosso script de backup estava funcionando, mas ainda tem um probleminha. Para poder chamar o script, devemos estar com o terminal na mesma pasta onde se encontra o script. Tem que ser possível executar o script a partir de qualquer pasta, não acha?
Vejamos como fazer para isso funcionar. Quando a gente executa algum comando no terminal, o Windows procura esse comando em lugares específicos. Pense que qualquer comando, como `dir` ou `cd`, também são pequenos scripts (essa é uma visão pouco simplificada , mas vale a analogia). Ou seja, o Windows precisa encontrar esses scripts, certo? E, para ajudá-lo, já existem alguns caminhos padrões que o Windows fica varrendo para achar esses pequenos scripts. Esse local padrão,aonde se encontram os caminhos para os scripts é o famoso **PATH**.
## Acessando a variável PATH
Esses caminhos ficam salvos dentro de uma variável do sistema com o nome `PATH`. E podemos imprimir esses caminhos no prompt:
```
echo PATH
```
Opa! Só imprimiu `PATH`. Esqueci uma coisa: se quisermos ver o conteúdo da variável `PATH` devemos
colocar um simbolo de **%** antes e depois, ficando assim:
```
echo %PATH%
```
Agora sim! Aparecem um monte de caminhos de diretórios onde o Windows procura executáveis e scripts. Repare que cada caminho está separado por um ponto e vírgula:
```
Path=C:\Program Files (x86)\Intel\iCLS Client\;C:\Program Files\Intel\iCLS Client\;C:\WINDOWS\system32;C:\WINDOWS;C:\WINDOWS\System32\Wbem;C:\WINDOWS\System32\WindowsPowerShell\v1.0\;C:\Program Files (x86)\Windows Live\Shared;C:\Program Files\Intel\Intel(R) Management Engine Components\DAL;C:\Program Files\Intel\Intel(R) Management Engine Components\IPT;C:\Program Files (x86)\Intel\Intel(R) Management Engine Components\DAL;C:\Program Files (x86)\Intel\Intel(R) Management Engine Components\IPT;C:\Program Files (x86)\Intel\OpenCL SDK\2.0\bin\x86;C:\Program Files (x86)\Intel\OpenCL SDK\2.0\bin\x64
```
<img src="https://s3.amazonaws.com/caelum-online-public/prompt/02/07-path.png" />
## Alterando o PATH pelo prompt
A nossa tarefa é adicionar a pasta onde se encontra o nosso script de backup no PATH . Assim o Windows também vai poder achar o nosso script. Vou te dar mais uma dica, essa pasta com os executáveis/scripts normalmente é chamada de `bin`. Nem sempre é assim, mas a maioria das ferramentas seguem esse padrão.
Então vamos criar uma pasta `bin` e jogar o nosso script lá dentro. Digite `cd %HOME%` para voltar na pasta raiz do usuário e crie o diretório `bin` com o `mkdir`e em sequência movendo o nosso script para dentro da pasta `bin` com o comando `move`:
```
cd
mkdir bin
move script.bat bin
```
<img src="https://s3.amazonaws.com/caelum-online-public/prompt/02/08-bin.png" />
Ótimo!
Agora respire fundo, pois temos que alterar a variável `PATH` para adicionar o nosso novo diretório (`C:\Users\caelum\bin`). A ideia é que precisamos redefinir o `PATH` para também incluir o nosso diretório. Baseado no conteúdo do que exibimos da variável `PATH`, podemos ver que temos que adicioná-lo ao final, separando por ponto e vírgula do resto. Em outras palavras:
```
set PATH=%PATH%;C:\Users\caelum\bin
```
Alteramos a variável `PATH` com o comando `set`, baseado no `PATH` existente (`%PATH%`) adicionando o novo diretório (`C:\Users\caelum\bin`), usando o caractere separador **`;`**. Será que funcionou? Podemos verificar isso facilmente imprimindo o `PATH` na linha de comando:
```
echo %PATH%
```
<img src="https://s3.amazonaws.com/caelum-online-public/prompt/02/09-set-path.png" />
Lá no final temos o nosso diretório, ou seja, na teoria, o Windows vai encontrar o nosso script. Façamos o teste:
```
script.bat
```
Podemos comemorar porque o Windows encontrou o nosso script!!
## Variáveis de ambiente
Vimos rapidamente o comando `set`, que serviu para alterar a variável `PATH`. Existem muitos mais variáveis além da `PATH`, e ainda deram um nome bonito para elas: **Variáveis de ambiente**.
O interessante é que o comando `set` também mostra TODAS essas variáveis! Como? Digite:
```
set
```
<img src="https://s3.amazonaws.com/caelum-online-public/prompt/02/10-set.png" />
Repare que existem variáveis que guardam o nome do computador, do usuário, da arquitetura do computador e muito mais. Até podemos criar novas variáveis e veremos que algumas plataformas de desenvolvimento (por exemplo Java) exigem a criação de variáveis próprias.
Para criar uma variável própria, também utilizamos o comando `set`, fazendo assim:
```
// Criando a variável PASTA_CÓDIGO
set PASTA_CODIGO=C:\Users\caelum\codigo
```
Você pode testar digitando `set` ou `echo %PASTA_CODIGO%`
<img src="https://s3.amazonaws.com/caelum-online-public/prompt/02/11-var-propria.png" />
## Variáveis permanentes
Parece tudo ótimo, mas faça um teste: feche e reabra o terminal. Agora digite `echo %PASTA_CODIGO%`. Não funcionou! Para nossa surpresa, a variável que acabamos de criar parou de funcionar! O terminal esqueceu as variáveis :( Esqueceu até da nossa alteração da variável `PATH`!
Infelizmente as nossas variáveis só são lembradas enquanto o terminal está aberto. Mas queremos deixar essas configurações permantes e existe um modo para isto. A solução é um comando bem parecido com o `set`, o `setx` que realmente salva o `PATH` de maneira permanente, porém como este comando altera as variáveis do sistema permanentemente, ele é especial e **precisa ser executado no prompt de comando tradicional do windows**.
O comando setx é praticamente igual ao `set`, só que não tem um **`=`** nem um **`;`** e separamos o caminho com aspas. Outro detalhe **muito importante** é adicionar o argumento **/M** no final do setx, que indica que queremos alterar uma variável do sistema.
```
setx PATH "%PATH%;C:\Users\caelum\bin" /M
```
<img src="https://s3.amazonaws.com/caelum-online-public/prompt/03/cap3-prompt-normal.png" />
Obtivemos um erro! A alteração das variáveis do sistema é algo tão importante no sistema operacional, que o prompt de comando em modo normal não tem permissão para mexer nelas, nós precisamos do prompt em modo administrador. E para abrir o prompt no modo administrador é algo bem simples, basta clicarmos com o botão direito do mouse e ir em *Executar como administrador*.
<img src="https://s3.amazonaws.com/caelum-online-public/prompt/03/cap3-prompt-admin.png" />
Dá até pra ver no topo da janela que o prompt mudou para o modo Administrador, agora é só executar nosso comando setx:
<img src="https://s3.amazonaws.com/caelum-online-public/prompt/03/cap3-prompt-setx.png" />
Agora sim nosso PATH foi alterado.
Existe também uma forma de alterar o `PATH` pela interface gráfica mas isso fica para os exercícios!
## Instalando nossa primeira linguagem
Agora que temos conhecimento de como manipular as variáveis de ambiente do Windows, instalar e configurar uma nova linguagem ou ferramenta é algo bem fácil! Vamos instalar o Java do zero para ver como é exemplo disso:
O primeiro passo é baixar o JDK pelo site, acesse: <http://www.oracle.com/technetwork/java/>
<img src="https://s3.amazonaws.com/caelum-online-public/prompt/03/jdk-download1.png" />
Dentro dos *Top Downloads*, escolha o Java SE. Na nova página clique no icone Java (Java Platform (JDK))
<http://www.oracle.com/technetwork/java/javase/downloads/index.html>
<img src="https://s3.amazonaws.com/caelum-online-public/prompt/03/jdk-download2.png" />
Agora temos que escolher o JDK adequado para a versão do nosso sistema operacional! A versão é a para Windows, claro, mas mesmo assim há duas opções: Um download para x86 e outro para 64bit. E agora?
<img src="https://s3.amazonaws.com/caelum-online-public/prompt/03/jdk-download3.png" />
## Escolhendo o JDK para sua arquitetura do processador
Essas duas opções são relacionadas com a arquitetura do processador. Para descobrir qual é a opção correta podemos usar o nosso prompt!
Abra o terminal e digite:
```
echo %PROCESSOR_ARCHITECTURE%
```
<img src="https://s3.amazonaws.com/caelum-online-public/prompt/03/ex-processor-architecture.png" />
Agora deve aparecer **x86** ou **AMD64** (ou ** IA64**). Tudo que tem `64` no final indica que o Windows é de 64 bits, já o `x86` indica que é de 32 bits. Beleza, já sabemos a arquitetura e qual download do Java escolher!
## Instalando o JDK
Escolha então o JDK (Java Development Kit) certo e, depois de ter aceitado a licença, podemos finalmente baixar o JDK. Baixe o arquivo `.exe`, que é algo como `java-8xxx-windows-xxx.exe`.
Execute o arquivo `java-8xxx-windows-xxx.exe` e passe pelo *Wizard* de instalação (pode instalar tudo, incluindo o source, não desmarque nada).
<img src="https://s3.amazonaws.com/caelum-online-public/prompt/03/jdk-dir-install.png" />
Repare que o diretório de instalação é `C:\Program Files\Java\jdk1.8.0_65`. Vamos lembrar disso!
O registro de sua VM (Virtual Machine) no site da Oracle é opcional.
## Testando Java no prompt e configuração do PATH
Chegou o momento de ver no prompt se o Java realmente foi instalado corretamente. Vamos abrir o `cmder` ou o `cmd` e testar, digite:
```
java -version
```
Deve aparecer:
```
java version "1.8.0_66"
Java(TM) SE Runtime Environment (build 1.8.0_66-b18)
Java HotSpot(TM) Client VM (build 25.66-b18, mixed mode, sharing)
```
Funcionou? Se funcionou pode ficar feliz pois o instalador já adicionou a pasta `bin` do Java no PATH!. Mas vamos testar também o compilador do Java:
```
javac -version
```
Não funcionou:
```
'javac' is not recognized as an internal or external command,
operable program or batch file.
```
<img src="https://s3.amazonaws.com/caelum-online-public/prompt/03/javac-path-problem.png" />
Hum, vamos verificar o `PATH`:
```
echo %PATH%
```
<img src="https://s3.amazonaws.com/caelum-online-public/prompt/03/path.png" />
Não encontramos nada sobre o nosso jdk1.8.0, mas tem um caminho suspeito:
```
C:\ProgramData\Oracle\Java\javapath
```
Vamos verificar esse caminho:
```
dir C:\ProgramData\Oracle\Java\javapath
16/12/2015 18:46 <DIR> .
16/12/2015 18:46 <DIR> ..
16/12/2015 18:46 <SYMLINK> java.exe [C:\Program Files\Java\jre1.8.0_65\bin\java.exe]
16/12/2015 18:46 <SYMLINK> javaw.exe [C:\Program Files\Java\jre1.8.0_65\bin\javaw.exe]
16/12/2015 18:46 <SYMLINK> javaws.exe [C:\Program Files\Java\jre1.8.0_65\bin\javaws.exe]
3 File(s) 0 bytes
2 Dir(s) 541.597.696 bytes free
```
<img src="https://s3.amazonaws.com/caelum-online-public/prompt/03/dir-javapath.png" />
Repare que nessa pasta não tem nada do `javac`. Devemos adicionar ao `PATH` a pasta onde se encontra o `javac`. Nós já sabemos a pasta de instalação do JDK:
```
dir "C:\Program Files\Java\jdk1.8.0_65"
Directory of C:\Program Files\Java\jdk1.8.0_65
16/12/2015 18:47 <DIR> .
16/12/2015 18:47 <DIR> ..
16/12/2015 18:45 <DIR> bin
06/10/2015 17:46 3.244 COPYRIGHT
\\ muito mais infos ...
```
<img src="https://s3.amazonaws.com/caelum-online-public/prompt/03/dir-jdk-path.png" />
Obs: Usamos aspas duplas pois tem um espaço no caminho.
Logo no início encontramos a pasta `bin`. Agora só falta adicionar ao `PATH`:
```
setx PATH "%PATH%;C:\Program Files\Java\jdk1.8.0_65\bin" /M
```
<img src="https://s3.amazonaws.com/caelum-online-public/prompt/03/cap3-prompt-setx-java.png" />
Fechando e abrindo o terminal podemos testar novamente o comando:
```
javac -version
javac 1.8.0_65
```
<img src="https://s3.amazonaws.com/caelum-online-public/prompt/03/javac-working.png" />
Problema resolvido!
## Criando o `JAVA_HOME`
O Java já está funcionado na linha de comando, mas existem outras ferramentas do mundo Java que também querem saber onde o Java foi instalado. E essas ferramentas acreditam tanto que a gente instalou o Java que elas simplesmente assumem a existência de uma variável de ambiente com nome `JAVA_HOME`.
Ok, tudo bem, vamos criar essa variável usando o `setx`, já para a deixarmos permanente. Só devemos ter um cuidado: o `JAVA_HOME` aponta para o diretório raiz do Java (sem a pasta `bin`):
```
setx JAVA_HOME "C:\Program Files\Java\jdk1.8.0_65" /M
```
<img src="https://s3.amazonaws.com/caelum-online-public/prompt/03/cap3-prompt-setx-java-home.png" />
Fechando e abrindo o terminal, podemos testar a variável:
```
echo %JAVA_HOME%
C:\Program Files\Java\jdk1.8.0_65
```
<img src="https://s3.amazonaws.com/caelum-online-public/prompt/03/echo-java-home.png" />
</html>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment