使用可执行文件文件夹的连接点运行 Java 不起作用

使用可执行文件文件夹的连接点运行 Java 不起作用

我刚刚从 Java 版本 8 升级到版本 12。操作系统是 Windows 7 Home。

由于 Oracle 不再提供单独的 JRE,因此在运行程序时,我需要提供 Java 可执行文件的文件夹名称。为了在 Java 更新时更轻松地更改文件夹,我将一个连接放入我的一个文件夹中,并将其添加到我的 PATH 中。但它不起作用。这是一个略作编辑的命令行会话。

首先检查连接点和路径是否正常:

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

现在尝试使用连接名称运行 Java

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.

这似乎找到了 java 可执行文件,但需要一个注册表项。但是,执行 cd 到可执行文件的目录就可以了!

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)

就像使用明确的目录名运行它一样:

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)

但使用该路径运行它则不行。

C:\>java -version
Error: opening registry key 'Software\JavaSoft\JRE'
Error: could not find java.dll
Error: Could not find Java SE Runtime Environment.

我有两个问题:

  1. 为什么连接不起作用?我尝试了符号链接,但也没用。
  2. 要使其工作,注册表需要什么?

答案1

我知道这是一个老问题,但我分享以供将来参考。

在本例中,连接点太深了一层。它不应该C:\Program Files\Javajdk-12.0.1\bin如此,而是C:\Program Files\Javajdk-12.0.1

相关内容