Sabe aquela exceção desagradável?
java.io.IOException

Entre as possibilidades que geram o erro estão as pré-históricas variáveis ​​de ambiente, que por algum motivo foram configuradas incorretamente.

Então, de uma vez por todas, aqui está uma lista definitiva para variáveis ​​de ambiente Java, edição Windows 7,8 e 10.

Mas primeiro, eu recomendo fazer o seguinte.
Se você não tiver a necessidade de ter mais de uma versão dos seus JDKs ou JREs instalados, desinstale quaisquer JDKs e JREs antigos.
Após a desinstalação, vá para a pasta Java (geralmente C: \ Arquivos de programas \ Java ) e verifique se está vazio.
Caso contrário, ainda havendo algum arquivo vai na força bruta exclua os teimosos.

Após, faça o download da versão atual do instalador do JDK
Esse instalador conterá o JDK e o JRE.
Instale-o.
Provavelmente, o processo de instalação também solicitará a instalação do JavaFX.
Se não houver necessidade de instalá-lo, não o instale.

Caso você esteja trabalhando com Servlets, precisará de bibliotecas específicas para JavaEE, como as que fornecem javax.servlet.*.
Eles não vêm com o instalador do JDK.

Voltando…
Baixe o instalador do Java EE SDK e execute-o (o instalador também instalará o Glassfish).

Quando as instalações terminam, podemos definir as variáveis ​​de ambiente.

Para modificar uma variável do sistema no Windows, abra a janela “Sistemas” (por exemplo, pressionando o atalho Win + Pause) e, na coluna da esquerda, clique em “Configurações avançadas do sistema“.

Na janela recém-aberta, clique no botão “Variáveis ​​de ambiente

Observação:
Os sinas de ???? você deve mudar para a versão que você baixou e consta na pasta de instalação.
Exemplo:
jdk???? e você baixou a versão 1.8.0_151 troque os sinais ???? por 1.8.0_151, apontando o caminho correto: C:\Program Files\Java\jdk1.8.0_151\lib

Variáveis ​​de ambiente


CLASSPATH

Variável de sistema CLASSPATH:
Usada pelos programas Java durante o tempo de execução para procurar bibliotecas e classes de terceiros.

CLASSPATH
.;C:\Program Files\Java\jdk????\lib;C:\Program Files\Java\jdk????\jre\lib
Dica:
O ponto no inicio ” . ” é usado para procurar classes no diretório de trabalho atual.

Informações:
C:\Program Files\Java\jdk????\lib
Contém alguns JARs, como tools.jar, que não fazem parte da pasta lib do JRE.
Por exemplo, tools.jar é necessário para executar o javac programaticamente durante o tempo de execução.

Ao instalar o JDK, no Windows, na verdade, existem duas pastas jre / lib
Uma na pasta:
java\jre?\lib
e a outra na pasta:
java\jdk????\jre\lib
Eu faço uso do último.


PATH

Variável de usuário PATH:
Necessária para procurar java.exe e javac.exe

PATH
[Outras-variáveis-existentes…];C:\Program Files\Java\jdk????\bin

Informações:
C:\Program Files\Java\jdk????\bin contém java.exe (para executar os principais métodos Java) e javac.exe (para compilar arquivos de código-fonte .java…).
Verifique se você está apontando para o JDK, e não para o JRE:
O JRE possui um javac.exe.


JAVA_HOME

Variável de usuário JAVA_HOME:
Convenção de fato usada por alguns programas Java, para apontar para a pasta base do JDK.

JAVA_HOME
C:\Program Files\Java\jdk????


JRE_HOME

Para uma instalação do JRE, deixe JRE_HOME apontar para este diretório:
C:\Program Files\Java\jre?

Para uma instalação do JDK, deixe JRE_HOME apontar para este diretório:
C:\Program Files\Java\jdk????\jre

Observe que para uma instalação do JDK há uma subpasta jre adicional .


JDK_HOME

A documentação Java da Oracle também se refere a este ambiente aqui e JDK_HOME
C:\Program Files\Java\jdk????