Precisamos fazer uma distinção entre as duas variáveis de ambiente discutidas aqui de forma intercambiável. Uma é a variável JAVA_HOME . O outro é o caminho variável . Qualquer processo que faça referência à variável JAVA_HOME está procurando o caminho de pesquisa para o JDK, não o JRE. O uso da variável JAVA_HOME não se destina ao próprio compilador Java. O compilador está ciente de sua própria localização. A variável é destinada a outro software para localizar mais facilmente o compilador. Essa variável é normalmente usada pelo software IDE para compilar e construir aplicativos a partir do código-fonte Java. Por outro lado, o intérprete do Windows CMD e muitos outros softwares de primeiro e de terceiros referenciam a variável Path, não a variável JAVA_HOME.
Caso de uso 1: Compilando a partir do CMD
Por exemplo, se você não estiver usando nenhum software IDE e quiser compilar a partir do CMD, independentemente do diretório de trabalho atual, o que você deseja é definir a variável Path corretamente. No seu caso, você nem precisa da variável JAVA_HOME. Como o CMD está usando Path, não JAVA_HOME para localizar o compilador Java.
Caso de uso 2: Compilando a partir do IDE
No entanto, se você estiver usando algum software IDE, será necessário examinar primeiro a documentação. Pode exigir que JAVA_HOME seja definido, mas também pode usar outro nome de variável para a mesma finalidade. O padrão de fato ao longo dos anos tem sido JAVA_HOME, mas isso nem sempre pode ser o caso.
Caso de uso 3: Compilando a partir do IDE e CMD
Se, além do software IDE, você também desejar compilar a partir do CMD, independentemente do diretório de trabalho atual, além da variável JAVA_HOME, também será necessário anexar o caminho de pesquisa do JDK à variável Path.
JAVA_HOME vs. Caminho
Se o seu problema estiver relacionado à compilação de Java, você deverá verificar a variável JAVA_HOME e Path (onde aplicável). Se o seu problema estiver relacionado à execução de aplicativos Java, você deseja verificar sua variável Path.
A variável de caminho é usada universalmente em todos os sistemas operacionais. Por ser definido pelo sistema e por ser a variável padrão usada para localizar o JRE, quase nunca há problemas ao executar aplicativos Java. Especialmente no Windows, onde os instaladores de software geralmente configuram tudo para você. Mas se você estiver instalando manualmente, a coisa mais segura a fazer é talvez ignorar completamente a variável JAVA_HOME e apenas usar a variável Path para tudo, tanto para o JDK quanto para o JRE. Qualquer versão recente de um software IDE deve ser capaz de buscá-la e usá-la.
Symlinks
Os links simbólicos podem fornecer ainda outra maneira de referenciar o caminho de pesquisa do JDK pegando carona uma das variáveis de ambiente existentes.
Não tenho certeza sobre as versões anteriores das versões Oracle / Sun JDK / JRE, mas pelo menos o instalador do jdk1.8.0_74 anexa o caminho de pesquisa C:\ProgramData\Oracle\Java\javapath
à variável Path e o coloca no início do valor da string. Este diretório contém links simbólicos para o java.exe, javaw.exe e javaws.exe no diretório JRE.
Portanto, pelo menos com o Java 8 JDK e presumivelmente o Java 8 JRE independente, nenhuma configuração de variável de ambiente precisa ser feita para o JRE. Contanto que você use o pacote do instalador para configurá-lo. No entanto, pode haver diferenças na instalação do Windows. Observe que o Oracle JRE é fornecido com o JDK.
Se você achar que sua configuração do Java JDK está usando a versão errada do compilador ou parece estar funcionando por mágica, sem ser explicitamente definida (sem lançar o feitiço), é possível que haja um link simbólico em algum lugar nas variáveis de ambiente . Portanto, convém verificar o link simbólico.