Skip to main content

适用于 Minecraft 的 Java (JRE/JDK)的安装选择与版本快速切换

本文只考虑 Minecraft Java 版。如有错误恳请您帮忙斧正。

什么是 Java ?什么是 JRE ?什么是 OpenJ9?


Java 是一种广泛使用的计算机编程语言,Java 版 Minecraft 是用 Java 编写的,因此游玩 Java 版 Minecraft 需要安装 JRE。

JRE (Java Runtime Enviromnent) [Java运行时环境] 是运行使用 Java 语言编写的软件的必备环境。
JDK (Java Development Kit) [Java开发套件],是供开发者使用的套件,有一些开发用的功能,JDK 内包含了 JRE。
JVM (Java Virtual Machine) [Java虚拟机] 是 JRE 的一部分,所有 Java 程序都运行在 JVM 中。

我们平时说的安装 Java,其实是安装 JRE。

OpenJ9 是不同于 HotSpot (OpenJDK中的标准JVM) 的一个 JVM,在内存管理方面领先 HotSpot 。经过测试,使用 OpenJ9 能在一定程度上减少 Minecraft 客户端的内存占用,但可能增加 CPU 的使用率,所以不建议在笔记本等 CPU 性能较弱的电脑上使用。

 

 

Minecraft 的 Java 版本需求


    一般情况下 Minecraft 纯原版的 Java 版本需求如下:

    • 1.0 - 1.11 可以使用 Java 6 和 Java 7,但推荐使用 Java 8
    • 1.12(17w13a) - 1.16.5(1.17-21w18a) 需要使用 Java 8
    • 1.17(21w19a) - 1.17.1 需要使用 Java 16
    • 1.18(1.18-pre2)需要使用 Java 17

    官方启动器内置 Java 版本为 Java 8-1.8.0_51、Java 16-16.0.1、Java 17-17.0.1
    经过测试,使用 Java 17 可以启动 1.0-1.18 纯原版的所有版本,但可能需要添加 JVM 参数 -XX:+CMSIncrementalMode,但使用不支持的 Java 版本可能导致不可预料的 BUG,不推荐。

    一般情况下 Minecraft 模组环境的 Java 版本需求如下:

    • 运行 1.1 - 1.13 的 Forge、Legacy Fabric 都可以使用 Java 8(1.7 前的某些远古组件可能需要 Java7)。
    • 运行 1.14 - 1.16 的 Forge、Fabric 需要使用 Java 8。也可以使用 Java9 - Java15 等高版本 Java,但部分模组可能不支持,也有少部分模组需要高版本的 Java。
    • 运行 1.17 的 Forge、Fabric 需要使用 Java 16,大部分组件也兼容 Java17。
    • 运行 1.18+ 的 Forge、Fabric 需要使用 Java 17

    使用高版本 Java 可以在一定程度上提高性能,但有部分模组不支持,同时也可能有模组需要更高版本的 Java。
    比如 Paper 服务端已在 Paper 1.16.5 build 669 和之后版本要求使用 Java 16,Paper 团队还建议运行最稳定的最新 JVM(可以理解为更高版本的 Java)。我们仅推荐在客户端使用高版本的 Java,因为即使客户端运算出错也不会影响珍贵的地图(单人游戏是带服务端的)。

    推荐使用带下划线的版本进行游戏,使用不支持的 Java 版本可能导致不可预料的 BUG。

     

    各种 JRE/JDK 的选择


    Java 是 Sun 公司发明的,2006 年末 Sun 公司宣传将开放 Java 源代码。
    2009 年 Oracle 公司收购了 Sun 公司。而 Sun 公司在被收购的几天前发布了 OpenJDK,即开源版本的 JDK。
    由于 OracleJDK 正统且免费性能好,于是大家都开始用 OracleJDK。但后来由于 Oracle 公司对于 Java 社群的不友善和商业化,逐渐催生了许多基于 OpenJDK 的第三方 JDK。

    目前流行的 JDK 有: OracleJDKOpenJDKLibericaZuluDragonwellRedHatOpenJDKAdoptOpenJDK(提供 Openj9)、GraalVM(其实不是 JDK,但它有Jvm)等。

    不同的 JDK 细节表现、性能、支持的系统/内存各有差别,你可以查看测评或自行测试来决定使用哪一个。

    玩 Minecraft 推荐使用:Zulu、OracleJDK、 GraalVM、Dragonwell。

     
    32 位和 64 位的选择

    时至今日,你应该无条件安装 64 位 JDK(只要你的系统是 64 位的)。
    如果你的系统不是 64 位的,那么我们强烈建议你重装为 64 位系统,现代 Intel/AMD 的 X86 架构处理器都是 64 位的,无须担心是否支持。
    32 位版本在 Windows 下仅能分配大约 1.5G 内存,这对 Minecraft 来说是远远不够的。

     

    关于 JavaFX

    JavaFX 是用来开发桌面应用的工具包,但许多第三方构建的 JDK 不包含 JavaFX,某些应用(HMCL)需要该工具包。
    一般来说你不需要它,但如果你打开某个应用时收到类似的警告:Cannot find JavaFX    这就说明你需要 JavaFX。

    你可以在这里找到 JavaFX 下载:https://gluonhq.com/products/javafx/ 
    下载时类型选择 SDK,然后解压到 JDK 安装目录即可。

    我们不推荐手动安装,推荐直接选择带有 JavaFX 的 JDK,如 ZuluLiberica
    Zulu 下载时在 Java Package 处选择带 FX 的选项即包含 JavaFX。
    Liberica 下载时在 Package 处选择带 Full 的选项即包含 JavaFX。

    *HMCL 启动器在 3.3.183 之前的版本需要 JavaFX,现在不确定。
    *Java 8 的 Oracle JDK  包含 JavaFX,但更高版本不包含。

     

    下载与安装


    你并不需要“安装”Java,只需要解压到任意文件夹即可。

    游玩 Minecraft 需要 Java 8、Java 16、Java 17  3 个版本。
    为确保兼容性,本文选择安装 Oracle JRE 8 与 Zulu JDK 16、Zulu JDK 17。
    在兼容的情况下,尽可能使用高版本 Java 可以在一定程度上提高性能。

    使用安装程序安装仅仅是多了环境变量、更新升级之类的东西,本质上和解压没有什么不同。
    使用解压的方式安装是为了避免环境变量混乱,导致版本错乱冲突不好管理等。
    什么是环境变量?如何手动配置环境变量?在文末有介绍。

    没有环境变量该如何使用 Java ?

    有环境变量的情况下通常的启动命令是 java -jar xxx.jar 。
    但你可以用 java路径/bin/java.exe -jar xxx.jar 来代替,其他系统可能没有 .exe 后缀,但本质是一样的。
    如果路径中有空格等特殊字符,那么你需要用英文单引号包裹路径,例如'java path/bin/java.exe' -jar xxx.jar
    如果你使用 Powershell 还需要再前面加上 & ,例如& 'java path/bin/java.exe' -jar xxx.jar
    java 命令本身就等于 java路径/bin/java.exe

    如果你使用 Linux 系统,你可以通过 alternatives --config java 命令来轻松切换默认 Java 版本。

     

    #1 安装 Oracle JRE 8

    此版本自带 JavaFX。

    1. 访问https://www.java.com/zh-CN/download/manual.jsp
    2. 点击并下载Windows 脱机 (64 位) 其他系统请下载对应文件(点击图片可以放大)。

    image-1641887921657.png

    3. 打开下载好的jre-8uxxx-windows-x64.exe,点击安装

    4. 安装完成,默认安装目录在C:\Program Files\Java\jre1.8.0_xxx(1.8.0 或 8.0.x 代表 Java 8,16.0.x 代表 Java 16)。

    image-1631775729168.png

     

    *这里安装的是 JRE,如果需要 JDK 请至 https://www.oracle.com/cn/java/technologies/javase-downloads.html 下载。
    *Oracle JRE/JDK 商业应用需要收费。

     

    #2 安装 Zulu JDK 16

    无论是其他第三方构建还是其他版本,它们的解压安装方式都是一样的,如果你想安装其他版本,请照葫芦画瓢

    1. 访问 https://www.azul.com/downloads/ 并拉到页面底端。

    2.由于 Java 16 是短期支持版本,目前 Zulu 已不再提供新版本的 Java 16,因此你需要先打开 Older Zulu versions 开关。
    如图选择Java 16(STS) 、Windows 、X86 64-bitJDK FX,其他系统请选择对应选项(点击图片可以放大)。
    当然,如果你硬盘空间比较紧张也可以选择安装 JRE。
    在 Java Package 处选择带 FX 的选项即包含 JavaFX。

    image-1641892533851.png

    3.选择完后点击 .Zip 下载压缩包。

    4. 用压缩软件打开,解压到C:\Program Files\Java(或你熟悉的目录)。

    5. 安装完成,安装目录在C:\Program Files\Java\zulu16.xx.xx-ca-fx-jdk16.0.x-win_x64

    image-1631775805856.png

    *Zulu JRE/JDK 商业应用免费。

    如果你是带独立显卡的笔记本电脑,别忘了在系统设置的图形设置中将刚刚安装各种版本的 java.exe 和 javaw.exe 设置为高性能。(路径为 Java 路径/binJava 路径/jre/bin

    #3 安装 Zulu JDK 17

    照葫芦画瓢即可。

     

    #4 (可选)配置环境变量与 Java 版本快速切换

    1.左下角的系统搜索直接搜索 编辑系统环境变量 并打开或是在控制面板中打开。

    2.点击环境变量(N)…

    3.检查用户变量中是否有带有 Java 的变量,有则将其删除。

    4.在系统变量中找到 Path 并双击打开,在弹出的编辑环境变量窗口中删除与 Java 有关的值。
    如:C:\Program Files\Java\jre1.8.0_311C:\Program Files (x86)\Common Files\Oracle\Java\javapath

    image-1641889161342.png

    5.继续在此窗口中点击 新建(N) 分三条输入%JAVA_HOME%\bin 和 %JAVA_HOME%\jre\binC:\Program Files\Java\scripts,点击确定

    image-1641890516879.png

    6.在系统变量中找找有没有 JAVA_HOME,如果没有则点击新建(W)新建一个,变量名(N)处填写 JAVA_HOME ,变量值(N)处填写你的 Java 安装目录,点击确定。如图:

    image-1641889603344.png

    再次点击新建(W),变量名(N)处填写 CLASSPATH,变量值(N)处填写.;%JAVA_HOME%\lib\dt.jar;%JAVA_HOME%\lib\tools.jar;,点击确定

    7.打开 C:\Program Files\Java 文件夹,并新建一个 scripts 文件夹。
    进入该文件夹,新建一个新建文本文档.txt 并在里面写上:

    @echo off
    setx JAVA_HOME "你的 Java 安装完整路径" /m

    (没有权限就在别的地方搞完再复制)
    一定记得把你的 Java 安装完整路径替换成你的实际 Java 安装路径,路径不可以有空格(如下图)。
    保存并将文件名改为java17.bat (你设置的是什么版本的路径就改成什么,或是改为你喜欢的名字)。重复几次直到覆盖你的所有 Java 版本。

    image-1641892892557.png

    image-1641890544765.png

    8.打开一个新的管理员 PowerShell,输入java17java8(或是你喜欢的名字)什么的就能看到切换效果了。
    如果提示 错误: 拒绝访问注册表路径。,说明你没以管理员身份运行,切换失败。
    如果提示 成功:指定的值已得到保存。,说明切换成功。

    注意:PowerShell 打开的时候环境变量就已经固定了,所以你需要新开一个才能看到切换效果。

    image-1641891516157.png

     

     

     

     

    在 Minecraft 启动器中使用


    一般来说,第三方启动器会自动检测到你安装的 JDK/JRE。
    但由于我们使用手动的方式安装了 Zulu 16,部分启动器可能检测不到,所以我们需要手动指定 Java 目录来让启动器使用。

    如果你使用官方启动器,那么你不需要操心这些,因为官方启动器自带 JRE。

    这里用 Zulu 16 做举例,如果你安装了其他版本的 Java,同理选择其他版本即可。

     

    MultiMC 启动器

    支持 Windows、Linux、macOS 系统。
    下载地址:https://multimc.org
    *不建议更改全局设置。

    1. 右键要更改的实例,选择编辑实例(点击图片可以放大)。

    image-1631776238551.png

    2. 点击设置 勾选 Java安装 点击 浏览…

    image-1631776287794.png

    3. 找到C:\Program Files\Java\zulu16.xx.xx-ca-fx-jre16.0.x-win_x64\bin 文件夹里的 javaw.exe 并选择。
    注意 zulu16.xx.xx-ca-fx-jre16.0.x-win_x64 会根据你安装的版本改变,请选择正确的文件夹。
    (其他系统请选择 路径/bin/java)(1.8.0 或 8.0.x 代表 Java 8,16.0.x 代表 Java 16)。

    image-1631776446069.png

    4.更改完成,点击关闭即可。

     

    HMCL 启动器

    支持 Windows、Linux、macOS 系统。
    下载地址:https://hmcl.huangyuhui.net/download(请下载开发版)
    *不建议更改全局设置,请先打开版本隔离,可以参考这篇文章

    1. 点击版本列表,找到要修改的游戏版本,点击右边的:(点击图片可以放大)。

    image-1631776763967.png

    2.选择游戏管理

    image-1631776901313.png

    3. 勾选启用游戏特定设置(不影响其他游戏版本),点击 Java 路径 右边的 V

    image-1631777245561.png

    4.A. 如果你运气好的话,启动器已经自动检测到了 Java 16,选择 16.0.2 即可(1.8.0 或 8.0.x 代表 Java 8,16.0.x 代表 Java 16)。

    image-1631777377627.png

    4.B. 如果你运气不好,启动器没有检测到 Java 16,那么请点击 自定义,然后点击右边的文件夹图标

    image-1631777636713.png

    4.B.1. 找到C:\Program Files\Java\zulu16.xx.xx-ca-fx-jre16.0.x-win_x64\bin 文件夹里的 javaw.exe 并选择。
    注意 zulu16.xx.xx-ca-fx-jre16.0.x-win_x64 会根据你安装的版本改变,请选择正确的文件夹。
    (其他系统请选择 路径/bin/java)(1.8.0 或 8.0.x 代表 Java 8,16.0.x 代表 Java 16)。

    image-1631776446069.png

    5. 完成,返回即可

     

    PCL 2 启动器

    支持 Windows 系统。
    下载地址:https://afdian.net/@LTCat (点击动态,找到正式版)
    *不建议更改全局设置,请先打开版本隔离,可以参考这篇文章

    1. 点击设置,然后点击自动搜索

    image-1631778212074.png

    2.A. 运气好的话你应该能看到 Java 8 和 Java 16,交由启动器自动判断即可(1.8.0 或 8.0.x 代表 Java 8,16.0.x 代表 Java 16)。

    image-1631778252198.png

    2.B.1. 如果你运气不好,启动器没有检测到 Java 16,或是选择了错误的 Java 版本。
    3.B.2. 点击设置,然后点击手动导入PCL2 真难用居然不能再版本里选择

    image-1631778782978.png

    2.B.3. 找到C:\Program Files\Java\zulu16.xx.xx-ca-fx-jre16.0.x-win_x64\bin 文件夹里的 javaw.exe 并选择。
    注意 zulu16.xx.xx-ca-fx-jre16.0.x-win_x64 会根据你安装的版本改变,请选择正确的文件夹。
    (其他系统请选择 路径/bin/java)(1.8.0 或 8.0.x 代表 Java 8,16.0.x 代表 Java 16)。

    2.B.4. 没有意外的话,Java 版本列表里面应该已经有了 Java 16,并显示手动导入。

    image-1631778967289.png

    2.B.5. 返回启动点击版本选择

    image-1631778502513.png
    2.B.6. 找到要修改的版本,点击右边的齿轮按钮

    image-1631778624708.png

    2.B.7. 在 游戏 Java 处选择合适的 Java

    image-1631779028952.png

    4. 完成

     

     

    什么是环境变量


    环境变量是操作系统中一个动态的值,可以被应用程序使用。例如 TEMP 变量可以指示一个临时文件夹,告诉程序去哪存放临时文件。

     

    有一类叫做 PATH 的变量,可以让操作系统在任意位置都找到可执行程序。

    用 Windows 的小伙伴可能比较疑惑,我安装软件的时候不是没有配置环境变量呢,不是直接点击打开就行吗?
    其实你点击快捷方式后,后台会自动切换到该目录然后在该目录打开你想要运行的软件。
    那为什么 Java 不行呢,因为 Java 没有 GUI(窗口界面),你需要用命令行的方式去调用 Java。在 Java 目录下有着 \bin 文件夹,里面有 java.exe javaw.exe 这些程序都是可以直接在命令行里启动的,但前提是你需要在这个文件夹里来使用这个程序。

    配置 PATH 是为了能在任意目录下都使用 java 命令。而不是移动到 java 文件夹再输入命令。

    比如我要在桌面运行 xxx.jar,如果添加 PATH 我可能就要将 xxx.jar 复制到 java 路径中使用。

     

    Java 的环境变量有哪些

    Java 一般需要配置 3 个环境变量 PATH,CLASSPATH,JAVA_HOME

    • JAVA_HOME - 多数脚本使用该环境变量来确定 Java 版本的位置。

    • Path - 当从控制台运行 Java 二进制文件(如 java 和 javac)时,使用的是该环境变量。

    • CLASSPATH - 用来指示 JVM 从哪搜索 class。

     
    Windows 手动配置 Java 环境变量

    我们手动安装的 Java 是不包含环境变量的,如果你想要在系统中直接使用就需要配置环境变量。

    1.左下角搜索按钮直接搜索 编辑系统环境变量 或是在控制面板中打开。

    2.点击环境变量(N)…

    3.用户变量系统变量下,单击新建

    4.在变量名(N)处输入 JAVA_HOME,在变量值(N)处输入你的 Java 安装目录(绝对路径)。
    该路径下的文件应该如下图所示。图中的路径为C:\Program Files\Java\jdk1.8.0_311
    如果路径中有空格,你应该加上英文双引号,如"C:\Program Files\Java\jd k 3 11"

    image-1640974185138.png

    5.用户变量系统变量下,单击新建。(确保和上次的一样)

    6.变量名(N)处输入 CLASSPATH,在变量值(N)处输入 .;%JAVA_HOME%\lib\dt.jar;%JAVA_HOME%\lib\tools.jar;

    7.用户变量系统变量找到 Path 变量,双击。(确保和上次的一样)

    8.在弹出的编辑环境变量窗口中点击新建。分两条输入%JAVA_HOME%\bin 和 %JAVA_HOME%\jre\bin,点击确定

    9.配置完成,你可以打开 CMD 或 Powershell 输入 java 查看是否已配置成功。

     

    仍然有不明白的地方?
    欢迎留言提出建议。