Acabei de atualizar do Java versão 8 para a versão 12. O sistema operacional é o Windows 7 Home.
Como a Oracle não fornece mais um JRE separado, ao executar um programa, preciso fornecer o nome da pasta do executável Java. Para facilitar a alteração da pasta quando o Java for atualizado, coloquei uma junção em uma das minhas pastas e adicionei-a ao meu PATH. Mas não funciona. Aqui está uma sessão de linha de comando ligeiramente editada.
Primeiro verifique se a junção e o caminho estão OK:
D:\Peter\PC>dir jre*
27/09/2019 15:11 <JUNCTION> JREDir [C:\Program Files\Javajdk-12.0.1\bin]
D:\Peter\PC>dir jredir\java*
Volume in drive D is DATA
Volume Serial Number is CE44-C814
Directory of D:\Peter\PC\jredir
27/09/2019 11:36 148,328 java.dll
27/09/2019 11:36 51,048 java.exe
27/09/2019 11:36 226,664 javaaccessbridge.dll
27/09/2019 11:36 20,840 javac.exe
27/09/2019 11:36 20,840 javadoc.exe
27/09/2019 11:36 174,952 javajpeg.dll
27/09/2019 11:36 20,840 javap.exe
27/09/2019 11:36 51,048 javaw.exe
8 File(s) 714,560 bytes
0 Dir(s) 149,081,808,896 bytes free
C:\>path
PATH=C:\Program Files (x86)...ls\Binn\;D:\Peter\PC\JREDir
Agora tente executar o Java usando o nome da junção
D:\Peter\PC>jredir\java -version
Error: opening registry key 'Software\JavaSoft\JRE'
Error: could not find java.dll
Error: Could not find Java SE Runtime Environment.
Parece encontrar o executável java, mas precisa de uma chave de registro. No entanto, fazer um cd no diretório do executável funciona bem!
C:\Program Files\Java\jdk-12.0.1\bin>java -version
Picked up _JAVA_OPTIONS: -Djava.net.preferIPv4Stack=true
java version "12.0.1" 2019-04-16
Java(TM) SE Runtime Environment (build 12.0.1+12)
Java HotSpot(TM) 64-Bit Server VM (build 12.0.1+12, mixed mode, sharing)
assim como executá-lo com um nome de diretório explícito:
D:\Peter\PC>"C:\Program Files\Java\jdk-12.0.1\bin"\java -version
Picked up _JAVA_OPTIONS: -Djava.net.preferIPv4Stack=true
java version "12.0.1" 2019-04-16
Java(TM) SE Runtime Environment (build 12.0.1+12)
Java HotSpot(TM) 64-Bit Server VM (build 12.0.1+12, mixed mode, sharing)
Mas executá-lo usando o caminho não.
C:\>java -version
Error: opening registry key 'Software\JavaSoft\JRE'
Error: could not find java.dll
Error: Could not find Java SE Runtime Environment.
Então eu tenho duas perguntas:
- Por que a junção não está funcionando? Tentei um link simbólico, mas também não funcionou.
- O que é necessário no registro para que funcione?
Responder1
Eu sei que é uma pergunta antiga, mas estou compartilhando para referência futura.
No exemplo, a junção tem um nível de profundidade a mais. Não deveria ser, C:\Program Files\Javajdk-12.0.1\bin
mas simC:\Program Files\Javajdk-12.0.1