Java 命令提示符和 STS 之间的版本不匹配
Java versions don't match between command prompt and STS
如果我打开命令提示符,请转到我的应用程序文件夹并键入以下内容:
java -version
我会得到以下结果:
java version "11.0.8" 2020-07-14 LTS
Java(TM) SE Runtime Environment 18.9 (build 11.0.8+10-LTS)
Java HotSpot(TM) 64-Bit Server VM 18.9 (build 11.0.8+10-LTS, mixed mode)
但是如果我转到 Spring 工具套件 > 在 Project Explorer 上右键单击项目名称 > 显示在 > 终端 > 并键入相同的命令(在与上面完全相同的文件夹中):
java -version
我得到了不同的结果:
openjdk version "14.0.2" 2020-07-14
OpenJDK Runtime Environment (build 14.0.2+12-46)
OpenJDK 64-Bit Server VM (build 14.0.2+12-46, mixed mode)
怎么可能?
在命令行中输入 echo %PATH%
时的结果:
C:\Program Files\Java\jdk-11.0.8;C:\Program Files\Common Files\Oracle\Java\javapath;C:\Program Files (x86)\Common Files\Oracle\Java\javapath;C:\Windows\system32;C:\Windows;C:\Windows\System32\Wbem;C:\Windows\System32\WindowsPowerShell\v1.0\;C:\Windows\System32\OpenSSH\;C:\Program Files (x86)\Oberthur Technologies\AWP\Dlls;C:\Program Files\Oberthur Technologies\AWP\Dlls;C:\Program Files\Git\cmd;C:\Program Files\Java\jdk-11.0.8\bin;C:\Program Files\apache-maven-3.6.3\bin;C:\Program Files\MySQL\MySQL Shell 8.0\bin\;C:\Users\Samsung\AppData\Local\Microsoft\WindowsApps;C:\Program Files\heroku\bin
在 STS 终端中输入 echo %PATH%
时的结果(与上述相同的文件夹):
C:/spring-tool-suite-4-4.8.0/contents/sts-4.8.0.RELEASE//plugins/org.eclipse.justj.openjdk.hotspot.jre.full.
win32.x86_64_14.0.2.v20200815-0932/jre/bin/server;C:/spring-tool-suite-4-4.8.0/contents/sts-4.8.0.RELEASE//p
lugins/org.eclipse.justj.openjdk.hotspot.jre.full.win32.x86_64_14.0.2.v20200815-0932/jre/bin;C:\Program File
s\Java\jdk-11.0.8;C:\Program Files\Common Files\Oracle\Java\javapath;C:\Program Files (x86)\Common Files\Ora
cle\Java\javapath;C:\Windows\system32;C:\Windows;C:\Windows\System32\Wbem;C:\Windows\System32\WindowsPowerSh
ell\v1.0\;C:\Windows\System32\OpenSSH\;C:\Program Files (x86)\Oberthur Technologies\AWP\Dlls;C:\Program File
s\Oberthur Technologies\AWP\Dlls;C:\Program Files\Git\cmd;C:\Program Files\Java\jdk-11.0.8\bin;C:\Program Fi
les\apache-maven-3.6.3\bin;C:\Program Files\MySQL\MySQL Shell 8.0\bin\;C:\Users\Samsung\AppData\Local\Micros
oft\WindowsApps;C:\Program Files\heroku\bin;C:\spring-tool-suite-4-4.8.0\contents\sts-4.8.0.RELEASE;
免责声明:以下答案是针对 Windows 的,测试是使用 Eclipse IDE 2020-12 为企业 Java 开发人员完成的。
经过一些测试,我发现了以下关于终端 PATH
的怪癖。
在 eclipse.ini
文件中,您(可以)指定使用 运行 Eclipse 本身的 Java 安装,使用 -vm
选项。参见:How to specify jdk path in eclipse.ini on windows 8 when path contains space
在旧版本的 Eclipse 上,该值未指定,这意味着 Eclipse 将使用默认的 Java 安装,即在 PATH 上找到的 Java 安装。在较新版本的 Eclipse 中,该值默认为作为 Eclipse 插件提供的 JRE。
如果 -vm
值为 目录 ,则在 Eclipse 中使用 Ctrl+Alt+T 打开终端时,该目录将添加到 PATH
,这意味着终端看到的 Java 版本将不同于在 Eclipse 外部打开的命令提示符中看到的版本。
如果 -vm
值是 javaw.exe
的完全限定名称,PATH
不受影响,即它将与 a 看到的 PATH
相同命令提示符。
要检查终端使用的 PATH
,运行 命令 echo %PATH%
。检查第一个条目,看它是否指特定的 Java 安装。
如果您想确保终端具有与您在命令提示符中看到的相同的 PATH
,请将 -vm
选项的值更改为完全限定 javaw.exe
。
如果我打开命令提示符,请转到我的应用程序文件夹并键入以下内容:
java -version
我会得到以下结果:
java version "11.0.8" 2020-07-14 LTS
Java(TM) SE Runtime Environment 18.9 (build 11.0.8+10-LTS)
Java HotSpot(TM) 64-Bit Server VM 18.9 (build 11.0.8+10-LTS, mixed mode)
但是如果我转到 Spring 工具套件 > 在 Project Explorer 上右键单击项目名称 > 显示在 > 终端 > 并键入相同的命令(在与上面完全相同的文件夹中):
java -version
我得到了不同的结果:
openjdk version "14.0.2" 2020-07-14
OpenJDK Runtime Environment (build 14.0.2+12-46)
OpenJDK 64-Bit Server VM (build 14.0.2+12-46, mixed mode)
怎么可能?
在命令行中输入 echo %PATH%
时的结果:
C:\Program Files\Java\jdk-11.0.8;C:\Program Files\Common Files\Oracle\Java\javapath;C:\Program Files (x86)\Common Files\Oracle\Java\javapath;C:\Windows\system32;C:\Windows;C:\Windows\System32\Wbem;C:\Windows\System32\WindowsPowerShell\v1.0\;C:\Windows\System32\OpenSSH\;C:\Program Files (x86)\Oberthur Technologies\AWP\Dlls;C:\Program Files\Oberthur Technologies\AWP\Dlls;C:\Program Files\Git\cmd;C:\Program Files\Java\jdk-11.0.8\bin;C:\Program Files\apache-maven-3.6.3\bin;C:\Program Files\MySQL\MySQL Shell 8.0\bin\;C:\Users\Samsung\AppData\Local\Microsoft\WindowsApps;C:\Program Files\heroku\bin
在 STS 终端中输入 echo %PATH%
时的结果(与上述相同的文件夹):
C:/spring-tool-suite-4-4.8.0/contents/sts-4.8.0.RELEASE//plugins/org.eclipse.justj.openjdk.hotspot.jre.full.
win32.x86_64_14.0.2.v20200815-0932/jre/bin/server;C:/spring-tool-suite-4-4.8.0/contents/sts-4.8.0.RELEASE//p
lugins/org.eclipse.justj.openjdk.hotspot.jre.full.win32.x86_64_14.0.2.v20200815-0932/jre/bin;C:\Program File
s\Java\jdk-11.0.8;C:\Program Files\Common Files\Oracle\Java\javapath;C:\Program Files (x86)\Common Files\Ora
cle\Java\javapath;C:\Windows\system32;C:\Windows;C:\Windows\System32\Wbem;C:\Windows\System32\WindowsPowerSh
ell\v1.0\;C:\Windows\System32\OpenSSH\;C:\Program Files (x86)\Oberthur Technologies\AWP\Dlls;C:\Program File
s\Oberthur Technologies\AWP\Dlls;C:\Program Files\Git\cmd;C:\Program Files\Java\jdk-11.0.8\bin;C:\Program Fi
les\apache-maven-3.6.3\bin;C:\Program Files\MySQL\MySQL Shell 8.0\bin\;C:\Users\Samsung\AppData\Local\Micros
oft\WindowsApps;C:\Program Files\heroku\bin;C:\spring-tool-suite-4-4.8.0\contents\sts-4.8.0.RELEASE;
免责声明:以下答案是针对 Windows 的,测试是使用 Eclipse IDE 2020-12 为企业 Java 开发人员完成的。
经过一些测试,我发现了以下关于终端 PATH
的怪癖。
在 eclipse.ini
文件中,您(可以)指定使用 运行 Eclipse 本身的 Java 安装,使用 -vm
选项。参见:How to specify jdk path in eclipse.ini on windows 8 when path contains space
在旧版本的 Eclipse 上,该值未指定,这意味着 Eclipse 将使用默认的 Java 安装,即在 PATH 上找到的 Java 安装。在较新版本的 Eclipse 中,该值默认为作为 Eclipse 插件提供的 JRE。
如果 -vm
值为 目录 ,则在 Eclipse 中使用 Ctrl+Alt+T 打开终端时,该目录将添加到 PATH
,这意味着终端看到的 Java 版本将不同于在 Eclipse 外部打开的命令提示符中看到的版本。
如果 -vm
值是 javaw.exe
的完全限定名称,PATH
不受影响,即它将与 a 看到的 PATH
相同命令提示符。
要检查终端使用的 PATH
,运行 命令 echo %PATH%
。检查第一个条目,看它是否指特定的 Java 安装。
如果您想确保终端具有与您在命令提示符中看到的相同的 PATH
,请将 -vm
选项的值更改为完全限定 javaw.exe
。