从 java 8 切换到 java 11

声明:本页面是StackOverFlow热门问题的中英对照翻译,遵循CC BY-SA 4.0协议,如果您需要使用它,必须同样遵循CC BY-SA许可,注明原文地址和作者信息,同时你必须将它归于原作者(不是我):StackOverFlow 原文地址: http://stackoverflow.com/questions/53128835/
Warning: these are provided under cc-by-sa 4.0 license. You are free to use/share it, But you must attribute it to the original authors (not me): StackOverFlow

提示:将鼠标放在中文语句上可以显示对应的英文。显示中英文
时间:2020-08-11 00:43:08  来源:igfitidea点击:

Switching to java 11 from java 8

javawindowsjava-11

提问by Aviral Ahuja

I have downloaded and installed oraclejdk11 from oracle official site and modified PATH & JAVA_HOME variable in system environment variable on windows

我已经从oracle官方网站下载并安装了oraclejdk11,并在windows的系统环境变量中修改了PATH & JAVA_HOME变量

C:\Users\Aviral>javac -version

C:\Users\Aviral>javac -version

javac 11.0.1

javac 11.0.1

C:\Users\Aviral>java -version

C:\Users\Aviral>java -version

java version "1.8.0_102"

java版本“1.8.0_102”

Java(TM) SE Runtime Environment (build 1.8.0_102-b14)
Java HotSpot(TM) 64-Bit Server VM (build 25.102-b14, mixed mode)

Java(TM) SE 运行时环境(构建 1.8.0_102-b14)
Java HotSpot(TM) 64 位服务器 VM(构建 25.102-b14,混合模式)

i know that jdk11 do not contain jre but how can i run a java program from cmd in java 11

我知道 jdk11 不包含 jre 但我如何在 java 11 中从 cmd 运行 java 程序

采纳答案by Prasanth Nair

bin folder contains all the traditional JRE tools. In Java 11, both JDK and JRE tools are consolidated so that there is no JRE within JDK 11.

bin 文件夹包含所有传统的 JRE 工具。在 Java 11 中,JDK 和 JRE 工具都已合并,因此 JDK 11 中没有 JRE。

回答by Slaw

The JDK includes the JRE which you can launch by using the javaexecutable in the binfolder. You use this executable just like any other executable.

JDK 包含 JRE,您可以使用java文件bin夹中的可执行文件启动它。您可以像使用任何其他可执行文件一样使用此可执行文件。

When you type javain the command line it is actually shorthand. It searches your PATHuntil it finds the first matching javaexecutable. If you want to specify a different javaexecutable you can give the absolute path to the executable.

当您java在命令行中键入时,它实际上是速记。它会搜索您的文件,PATH直到找到第一个匹配的java可执行文件。如果要指定不同的java可执行文件,可以提供可执行文件的绝对路径。

C:\Users\Avril> "C:\Program Files\Java\jdk-11.0.1\bin\java" -jar path\to\file.jar

You may be wondering, if you've set JAVA_HOMEand PATHto point to JDK-11, why does java -versionstill use Java 8?

您可能想知道,如果您已经设置JAVA_HOMEPATH指向 JDK-11,为什么java -version仍然使用 Java 8?

Take a look at your PATHand you'll likely find something like C:\ProgramData\Oracle\Java\javapathas one of the first entries (see this). This entry was added automatically when you installed Java 8 and points to the Java 8 executables (java, javaw, and javaws). Since it's before your %JAVA_HOME%\binentry, it takes precedence. However, ...\javapathdoesn't contain javacand that's why javac -versionused JAVA_HOME(Java 11).

看看你的PATH,你可能会发现像C:\ProgramData\Oracle\Java\javapath第一个条目之一(见这个)。当你安装了Java 8点到Java 8可执行文件自动添加该条目(javajavaw,和javaws)。由于它在您%JAVA_HOME%\bin输入之前,因此优先。但是,...\javapath不包含javac,这就是javac -version使用JAVA_HOME(Java 11)的原因。

回答by katiforis

In order to execte program from another folder than bin using java 11 you must set the JAVA_HOME path as follows from CMD:

为了使用 java 11 从 bin 之外的另一个文件夹执行程序,您必须从 CMD如下设置 JAVA_HOME 路径:

Open CMD as Administrator

以管理员身份打开 CMD

Set JAVA_HOME to JDK 11 bin folder

将 JAVA_HOME 设置为 JDK 11 bin 文件夹

setx -m JAVA_HOME "C:\Program File\Java\..."

回答by Badri Paudel

I upgraded to JDK 11 from JDK 8. After adding Java 11 to the path [ point path up to

我从 JDK 8 升级到 JDK 11。将 Java 11 添加到路径后 [指向路径

bin foler ] and JAVA_HOME [ only upto jdk folder (don't include bin )]

bin foler ] 和 JAVA_HOME [仅限 jdk 文件夹(不包括 bin )]

successfully,

成功地,

java -versionwas still pointing to the previous java version (java 8 in my case.)

java -version仍然指向以前的 java 版本(在我的例子中是 java 8。)

Then, I ran a command "setx -m JAVA_HOME "C:\Program Files\Java\jdk-11.0.7"

然后,我运行了一个命令 "setx -m JAVA_HOME "C:\Program Files\Java\jdk-11.0.7"

Now java -versionor javac -versionboth shows java 11.

现在java -versionjavac -version两者都显示 java 11。

I hope it helps you too.

我希望它也能帮助你。