如果我打开命令提示符,进入我的应用程序文件夹,并键入以下命令:
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 Tool Suite>在项目资源管理器上右键单击项目名称;Show in>终端的在然后输入相同的命令(在与上面完全相同的文件夹中):
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 FilesJavajdk-11.0.8;C:Program FilesCommon FilesOracleJavajavapath;C:Program Files (x86)Common FilesOracleJavajavapath;C:Windowssystem32;C:Windows;C:WindowsSystem32Wbem;C:WindowsSystem32WindowsPowerShellv1.0;C:WindowsSystem32OpenSSH;C:Program Files (x86)Oberthur TechnologiesAWPDlls;C:Program FilesOberthur TechnologiesAWPDlls;C:Program FilesGitcmd;C:Program FilesJavajdk-11.0.8bin;C:Program Filesapache-maven-3.6.3bin;C:Program FilesMySQLMySQL Shell 8.0bin;C:UsersSamsungAppDataLocalMicrosoftWindowsApps;C:Program Filesherokubin
在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
sJavajdk-11.0.8;C:Program FilesCommon FilesOracleJavajavapath;C:Program Files (x86)Common FilesOra
cleJavajavapath;C:Windowssystem32;C:Windows;C:WindowsSystem32Wbem;C:WindowsSystem32WindowsPowerSh
ellv1.0;C:WindowsSystem32OpenSSH;C:Program Files (x86)Oberthur TechnologiesAWPDlls;C:Program File
sOberthur TechnologiesAWPDlls;C:Program FilesGitcmd;C:Program FilesJavajdk-11.0.8bin;C:Program Fi
lesapache-maven-3.6.3bin;C:Program FilesMySQLMySQL Shell 8.0bin;C:UsersSamsungAppDataLocalMicros
oftWindowsApps;C:Program Filesherokubin;C:spring-tool-suite-4-4.8.0contentssts-4.8.0.RELEASE;
免责声明:以下答案是针对Windows的,并且测试是使用Eclipse IDE 2020-12 for Enterprise Java Developers完成的。
经过一些测试,我发现了以下关于终端PATH
的怪癖。
在eclipse.ini
文件中,您(可以)使用-vm
选项指定使用哪个Java安装来运行Eclipse本身。参见:当路径包含空格
时,如何在windows 8中指定eclipse.ini中的jdk路径在旧版本的Eclipse上,该值未指定,这意味着Eclipse将使用默认的Java安装,即在PATH上找到的Java安装。在较新版本的Eclipse中,该值默认为作为Eclipse插件附带的JRE。
如果-vm
值是目录,那么在Eclipse中使用Ctrl+Alt+T打开终端时,该目录将被附加到PATH
,这意味着终端看到的Java版本将与在Eclipse外打开命令提示符中看到的版本不同。
如果-vm
值是javaw.exe
的完全限定名,则PATH
不受影响,即它将与命令提示符中看到的PATH
相同。
查看Terminal使用的PATH
,执行命令echo %PATH%
。检查第一个条目,看看它是否指向特定的Java安装。
如果您想确保终端具有与您在命令提示符中看到的相同的PATH
,请更改-vm
选项的值以完全限定javaw.exe
。