命令提示符和 STS 之间的 Java 版本不匹配



如果我打开命令提示符,进入我的应用程序文件夹,并键入以下命令:

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

相关内容

  • 没有找到相关文章

最新更新