微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

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

如何解决Java 版本在命令提示符和 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 Tool Suite > 在 Project Explorer 上右键单击项目名称 > Show in > Terminal > 并输入相同的命令(在与上面完全相同的文件夹中):

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 开发人员完成的。

经过一些测试,我发现了以下有关终端 const validateLink = link => ['hoopla','kanopy',/*...*/].some(sdl => link.includes(sdl)); console.log( "validateLink('https://www.hulu.com/watch/...') ?",validateLink('https://www.hulu.com/watch/...') // false ); console.log( "validateLink('https://www.hoopla.com/watch/...') ?",validateLink('https://www.hoopla.com/watch/...') // true ); 的怪癖。

PATH 文件中,您(可以)使用 eclipse.ini 选项指定用于运行 Eclipse 本身的 Java 安装。请参阅: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 打开终端时,该目录将被添加到 -vm 之前,这意味着终端看到的 Java 版本将与在 Eclipse 之外打开的命令提示符中看到的版本不同。

如果 PATH 值是 -vm 的完全限定名称,则 javaw.exe 不受影响,即它与命令提示符看到的 PATH 相同.

要检查终端使用的 PATH,请运行命令 PATH。检查第一个条目以查看它是否涉及特定的 Java 安装。

如果您想确保终端具有与您在命令提示符中看到的相同的 echo %PATH%,请将 PATH 选项的值更改为完全限定 -vm。>

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。