繁体   English   中英

对我的命令提示符用于 java 的 jdk 和 jre 感到困惑

[英]Confused about what jdk and jre my command prompt is using for java

我对我正在使用的 java 工具的兼容性感到非常困惑,最终下载了不同版本的 java 所以现在我不知道我实际使用的是什么版本的 jdk 或 jre。 当我编译时,我在命令提示符中使用 --release 8,这到底是什么意思?

目前我的程序文件夹在 java 文件夹中有 jdk-18,我的程序文件(x86)文件夹有

  • jdk1.6.0_45

  • JDK 1.7.0_80

  • jre 1.8.0_ 321

  • jre6

  • jre7

我的 java 家庭环境变量是 C:\Program Files\Java\jdk-18

我的类路径有文件 C:\Program Files (x86)\Java\jdk1.7.0_80\lib\tools.jar

当我在命令提示符中键入 java -version 时,我得到

java version "1.8.0_321"
Java(TM) SE Runtime Environment (build 1.8.0_321-b07)
Java HotSpot(TM) Client VM (build 25.321-b07, mixed mode)

那么这是否意味着我的 cmd 使用 jre 1.8.0_321? jdk呢? 如果需要,我该如何更改?

当您运行java -version时 - 使用在PATH环境变量中找到的第一个java 确保使用命令where java (Windows) 或which java (Linux) - 它会告诉你位置。

当您运行mvn install - 使用在JAVA_HOME环境变量中找到的 JDK。 确保使用mvn -version - 它会告诉你位置。

当您从 IDE - IDE 运行时,通常您为每个项目指定 JDK。

当您运行javac --release 8 Something.java时,您要求编译器生成与您指定的版本兼容的 output - 它与您实际运行它的 JDK 无关。 这个标志是在 JDK 9 中添加的,所以如果它没有失败,那么这意味着你正在 JDK>=9 上运行。

如果您想 100% 确定完全限定路径 - 例如在 Windows "C:\Program Files\Java\jdk1.8.0_152\bin\javac.exe" Something.java

那么这是否意味着我的 cmd 使用 jre 1.8.0_321?

是的。

jdk呢?

不清楚。

运行javac -version ,它将告诉您默认运行的编译器版本。

The versions of the Java tools that you get when you type java , javac , jar (etcetera) at the CMD prompt are solely determined by the PATH environment variable setting in effect at the command prompt .

其他变量做其他事情......但不是这个。

如果需要,我该如何更改?

如果您想更改键入java的功能,请更改PATH

请注意, PATH变量是影响所有* 命令的标准 Windows 环境变量,而不仅仅是 Java 工具。 应该有很多关于如何设置PATH的教程,以及 Windows CMD 提示。 您可能应该花时间阅读它们。

您也可以只使用 Java 工具的绝对路径; 例如“C:\Program Files (x86)\Java\jdk1.7.0_80\bin\java.exe”可能是 Java 7 java命令的正确路径。 (您可以轻松检查...并通过查看安装树找到正确的路径。)


关于您的其他变量:

我的 java 家庭环境变量是 C:\Program Files\Java\jdk-18

那大概是JAVA_HOME 这告诉(许多)第 3 方工具要使用哪些 Java 工具。 但除非您已将PATH配置为依赖于JAVA_HOME ,否则它不会改变键入java的作用。

我的类路径有文件 C:\Program Files (x86)\Java\jdk1.7.0_80\lib\tools.jar

那大概是CLASSPATH 该变量提供了一个默认路径, java将使用它来查找要加载的类。 例如,如果您运行java com.acme.Example ,它将使用CLASSPATH搜索已编译的Example class。

所以“C:\Program Files (x86)\Java\jdk1.7.0_80\lib\tools.jar”几乎肯定是不正确的。 (那个 JAR 文件包含实现各种 Java 工具的类。它不需要在类路径上,除非你的 Java 甚至你的应用程序需要在类路径上运行其他东西。申请工作。

您需要阅读一下 Classpath 是什么、它是如何工作的以及如何正确设置它。 将其设置为随机填充是使您的 Java 代码不起作用的可靠方法...

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM