【问题标题】:Switching to java 11 from java 8从 java 8 切换到 java 11
【发布时间】:2019-04-07 07:17:46
【问题描述】:

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

C:\Users\Aviral>javac -version

javac 11.0.1

C:\Users\Aviral>java -version

java 版本“1.8.0_102”

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

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

【问题讨论】:

  • 在 bin 路径中显示 java 版本为 11.01,但我如何使用 java 11 从另一个文件夹执行程序
  • 当你设置JAVA_HOME和PATH时,你可以全局访问java命令(意味着你可以在任何路径中使用它)。

标签: java windows java-11


【解决方案1】:

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

【讨论】:

    【解决方案2】:

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

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

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

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

    查看您的PATH,您可能会发现C:\ProgramData\Oracle\Java\javapath 之类的内容是第一批条目之一(see this)。当您安装 Java 8 并指向 Java 8 可执行文件(java、javaw 和 javaws)时,会自动添加此条目。由于它在您的 %JAVA_HOME%\bin 条目之前,因此它具有优先权。但是,...\javapath 不包含 javac,这就是为什么 javac -version 使用 JAVA_HOME (Java 11)。

    【讨论】:

    • 我的路径变量只包含jdk11 bin文件夹的路径
    • 那么我假设 java 不会使用 Java 8。在某个地方,一定有东西指向 Java 8。如果不是,那么可能你的环境还没有“刷新”。跨度>
    • 谢谢@Slaw。我浪费了很长时间来找出为什么 java -version 即使在设置了正确的 bin 路径后也没有显示 Java 11。从路径变量中删除 C:\ProgramData\Oracle\Java\javapath 有效!
    【解决方案3】:

    为了使用 java 11 从 bin 以外的其他文件夹执行程序,您必须将 JAVA_HOME 路径设置为如下从 CMD:

    以管理员身份打开 CMD

    将 JAVA_HOME 设置为 JDK 11 bin 文件夹

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

    【讨论】:

    • 我使用该命令并得到“成功:结果值已保存”但仍将 java 1-8 作为 java 版本
    • 因为错了。您没有将其设置为 bin 文件夹。使用 jdk 文件夹。
    • 将 C:\ProgramData\Oracle\Java\javapath 移到底部,在 Java 11 路径下解决了问题。
    【解决方案4】:

    我从 JDK 8 升级到 JDK 11。将 Java 11 添加到路径后 [point path up to

    bin foler ] 和 JAVA_HOME [ 只到 jdk 文件夹 (不包括 bin ) ]

    成功了,

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

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

    现在java -version 或javac -version 都显示java 11。

    希望对你也有帮助。

    【讨论】:

      猜你喜欢
      • 2021-09-25
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-03-01
      • 2019-09-20
      • 2020-06-09
      • 1970-01-01
      • 2019-01-24
      相关资源
      最近更新 更多