适用于 Minecraft 的 Java (JRE/JDK)的安装选择与版本快速切换
本文只考虑 Minecraft Java 版,不考虑基岩版与网易中国版。
如果你使用官方启动器,那么你并不需要手动安装 Java,因为官方启动器内置 JRE。
什么是 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 的使用率。由于 Minecraft 非常需要单核性能,所以除非内存实在不够,否则不推荐使用,也不建议在笔记本等 CPU 性能较弱的电脑上使用。
OpenJDK 是 JDK 的开源版本,完全自由且开放源码,除了 Oracle 之外的 JDK 发行版均是在此基础上二次开发来的(不确定)。
Minecraft 的 Java 版本需求
一般情况下 Minecraft 纯原版的 Java 版本需求如下:
1.0 - 1.11.x
可以使用 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,大部分组件也兼容 Java17。1.18(1.18-pre2) - 1.20.4
需要使用 Java 17。1.20.5(24w14a)
及以上版本需要使用 Java 21。
官方启动器内置 Java 版本为 Java 8-1.8.0_51、Java 16-16.0.1、Java 17-17.0.1、Java 21-21.0.3,发行版是 Microsoft Build of OpenJDK™,这些版本应该有着最强的兼容性。
纯原版的 Minecraft 有着较强的兼容性。经过测试,使用 Java 17 在支持的启动器中可以启动 1.0-1.18 纯原版的所有版本,但可能需要添加 JVM 参数 -XX:+CMSIncrementalMode
。使用不支持的 Java 版本可能导致不可预料的 BUG,但使用高版本 Java 能在一定程度上提高性能,总体来说不是很推荐。
一般情况下 Minecraft 模组环境的 Java 版本需求如下:
- 运行
1.1 - 1.13.x
的 Forge、Legacy Fabric 等都可以使用 Java 8(1.7 前的某些远古组件可能需要 Java7)。 - 运行
1.14.x - 1.16.x
的 Forge、Fabric 等需要使用 Java 8。也可以使用 Java9 - Java15 等高版本 Java,但部分模组可能不支持,也有少部分模组需要高版本的 Java。 - 运行
1.17.x
的 Forge、Fabric 等需要使用 Java 16,大部分组件也兼容 Java17。 - 运行
1.18.x - 1.20.4
版本的 Forge、Fabric 等需要使用 Java 17。 - 运行
1.20.5
及以上版本的 Forge、Fabric 等需要使用 Java 21。
使用高版本 Java 可以在一定程度上提高性能,但有部分模组不支持,同时也可能有模组需要更高版本的 Java。
比如 Paper 服务端已在 Paper 1.16.5 build 669 和之后版本要求使用 Java 16,Paper 团队还建议运行最稳定的最新 JVM(可以理解为更高版本的 Java)。我们仅推荐在客户端使用高版本的 Java,因为即使客户端运算出错也不会影响珍贵的地图(单人游戏是带服务端的)。
注:由于 2021 年 10 月 11 日,OpenJDK 更改了一个类构造函数,因此 Java 1.8.0_321 或更新版本可能会导致 1.16.5 等旧版本 Forge 或 Faric 不可使用,您可以考虑降级 Java 版本到 Java 1.8.0_321 之前,或者尝试更新 Forge 或 Faric 版本(如 Forge 1.16.5 已在 36.2.26 版本中修复)。
推荐使用带下划线的版本进行游戏,使用不支持的 Java 版本可能导致不可预料的 BUG。
各种 JRE/JDK 的选择
Java 是 Sun 公司发明的,2006 年末 Sun 公司宣传将开放 Java 源代码。
2009 年 Oracle 公司收购了 Sun 公司,而 Sun 公司在被收购的几天前发布了 OpenJDK,即开源版本的 JDK(源代码)。
收购后 Oracle 公司推出了 OracleJDK ,由于正统且免费性能好,于是大家都开始用 OracleJDK。
但后来由于 Oracle 公司对于 Java 社群的不友善和商业化,逐渐催生了许多基于 OpenJDK 的第三方 JDK。
从技术上来说,OpenJDK 仅提供源代码(现在也直接提供可执行文件)所以你不能直接使用 OpenJDK 来运行 Java 应用程序,而必须自己构建 OpenJDK 源代码来获得可执行文件,或者找一个会为你构建的厂商(即发行版)。
只要符合规范,不同 JDK 发行版应该均可互相兼容。但不同的 JDK 细节表现、性能、支持的系统/内存等各有差别,也可能有不同的功能,你可以查看测评或自行测试来决定使用哪一个。
目前流行的 JDK 发行版有: OracleJDK、OpenJDK、Azul Zulu Builds of OpenJDK、Dragonwell、Liberica、RedHatOpenJDK、Microsoft、AdoptOpenJDK(提供 Openj9)、GraalVM(不完全是 JDK,但它有 JVM)等。
玩 Minecraft 推荐使用:Azul Zulu Builds of OpenJDK、Dragonwell、GraalVM 这些应该比原版 OpenJDK 有着更好的效果,我推荐使用 Azul Zulu Builds of OpenJDK。此外本家的 OracleJDK 也是经典的选择。也有人说用微软自家的 Microsoft Build of OpenJDK 也许会有神秘加成。
OracleJDK 商业使用需要付费,且有诸多限制,生产使用请小心。
在哪下载?
打开上面的超链接,找到 “Download”、"下载"、“.zip” 等按钮即可下载,相信聪明的你能找到的。
或是查看下面的手把手教学。
32 位和 64 位的选择
时至今日,你应该无条件安装 64 位 JDK(只要你的系统是 64 位的)。
32 位版本在 Windows 下仅能分配大约 1.5G 内存,这对 Minecraft 来说是远远不够的。
我如何知道我的系统是不是 64 位的
Windows 系统请打开 我的电脑/计算机/这台电脑/此电脑
,然后在空白处右键选择 属性
。
或者右键任务栏,选择 任务栏设置
,然后选择 系统 -> 系统信息
。
在弹出来的界面找到 “系统类型” ,这一行字应该显示为“XX位操作系统,基于XXX的处理器”。
- “64 位操作系统,基于 x64 的处理器” – 你可以放心安装 64 位 JDK。
- “32 位操作系统,基于 x64 的处理器” – 你只能使用 32 位 JDK,强烈建议你重装为 64 位系统。
- “32 位操作系统,基于 x86 的处理器” – 你的电脑是上世纪的古董,几乎不可能玩现代游戏。
- “64 位操作系统,基于 ARM 的处理器” – 你需要使用 ARM 专用的 64位 JDK。
- “32 位操作系统,基于 ARM 的处理器” – 你只能使用 ARM 专用的 32 位 JDK。同时请联系你的设备制造商询问是否支持 64 位操作系统,若支持则我们建议重装为 64 位操作系统。
其他系统请自行搜索 :D
关于 JavaFX
JavaFX 是用来开发桌面应用的工具包,但许多第三方构建的 JDK 不包含 JavaFX,某些应用(HMCL)需要该工具包。
一般来说你不需要它,但如果你打开某个应用时收到类似的警告:Cannot find JavaFX 这就说明你需要 JavaFX。
你可以在这里找到 JavaFX 下载:https://gluonhq.com/products/javafx/
下载时类型选择 SDK,然后解压到 JDK 安装目录即可。
我们不推荐手动安装,推荐直接选择带有 JavaFX 的 JDK,如 Azul Zulu Builds of OpenJDK、Liberica。
Zulu 下载时在 Java Package 处选择带 FX 的选项即包含 JavaFX。
Liberica 下载时在 Package 处选择带 Full 的选项即包含 JavaFX。
*HMCL 启动器的 3.3.183 及之前的版本需要 JavaFX,现在不确定。
*Java 8 的 Oracle JDK 包含 JavaFX,但更高版本不包含。
下载与安装
你并不需要“安装”Java,只需要解压到任意文件夹即可。
旧版本教程:安装包 Oracle JRE + 手动 Azul Zulu JDK
你并不需要“安装”Java,只需要解压到任意文件夹即可。
由于本文编写时还没有出现 Java 21,以下例子以 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 版本。
注:Azul Zulu 和 OracleJRE 默认安装目录不同。
OracleJRE 默认安装目录在 C:\Program Files\Java\jre1.8.0_xxx
Azul Zulu 默认安装目录在 C:\Program Files\Zulu\zulu-8
下文默认目录是根据 OracleJDK 来的,请根据你的需要调整。
#1 安装 Oracle JRE 8
OracleJDK 商业使用需要付费,且有诸多限制,生产使用请小心。
此版本自带 JavaFX。
*这里安装的是 JRE,如果需要 JDK 请至 https://www.oracle.com/cn/java/technologies/javase-downloads.html 下载。
1. 访问 https://www.java.com/zh-CN/download/manual.jsp
2. 页面上方有标记版本,如 推荐 Version 8 Update 421
即 Java 8.
3. 点击并下载Windows 脱机 (64 位)
其他系统请下载对应文件(点击图片可以放大)。
4. 打开下载好的jre-8uxxx-windows-x64.exe
,点击安装
。
5. 安装完成,默认安装目录在 C:\Program Files\Java\jre1.8.0_xxx
(1.8.0 或 8.0.x 代表 Java 8,16.0.x 代表 Java 16)。
#2 安装 Azul Zulu JDK 16
无论是其他第三方构建还是其他版本,它们的解压安装方式都是一样的,如果你想安装其他版本,请照葫芦画瓢。
1. 访问 https://www.azul.com/downloads/ 。
2. 由于 Java 16 是短期支持版本,目前 Zulu 已不再提供新版本的 Java 16,因此你需要先打开 Older Zulu versions
开关。
如图选择Java 16(STS)
、Windows
、X86 64-bit
、JDK FX
,其他系统或架构请选择对应选项(点击图片可以放大)。
当然,如果你硬盘空间比较紧张也可以选择安装 JRE。
在 Java Package 处选择带 FX 的选项即包含 JavaFX。
3.选择完后点击 .Zip
下载压缩包。
4. 用压缩软件打开,解压到C:\Program Files\Java
(或你熟悉的目录)。
5. 安装完成,安装目录在C:\Program Files\Java\zulu16.xx.xx-ca-fx-jdk16.0.x-win_x64
。
*Zulu JRE/JDK 商业应用免费。
如果你是带独立显卡的笔记本电脑,别忘了在系统设置的图形设置中将刚刚安装各种版本的 java.exe
和 javaw.exe
设置为高性能。(路径为 Java 路径/bin
或 Java 路径/jre/bin
)每次更换版本后都需要设置。
#3 安装 Azul Zulu JDK 17
照葫芦画瓢即可。
#4 (可选)配置环境变量与 Java 版本快速切换
仅适用于 Windows 系统,Linux 系统使用 alternatives --config java
命令即可轻松切换默认 Java 版本。
1.左下角的系统搜索直接搜索 编辑系统环境变量
并打开或是在控制面板中打开。
2.点击环境变量(N)…
。
3.检查用户变量
中是否有带有 Java 的变量,有则将其删除。
4.在系统变量
中找到 Path
并双击打开,在弹出的编辑环境变量
窗口中删除与 Java 有关的值。
如:C:\Program Files\Java\jre1.8.0_311
和 C:\Program Files (x86)\Common Files\Oracle\Java\javapath
5.继续在此窗口中点击 新建(N)
分三条输入%JAVA_HOME%\bin
和 %JAVA_HOME%\jre\bin
和 C:\Program Files\Java\scripts
,点击确定
。
6.在系统变量
中找找有没有 JAVA_HOME,如果没有则点击新建(W)
新建一个,变量名(N)处填写 JAVA_HOME
,变量值(N)处填写<你的 Java 安装目录>
,点击确定
。如图:
再次点击新建(W)
,变量名(N)处填写 CLASSPATH
,变量值(N)处填写.;%JAVA_HOME%\lib\dt.jar;%JAVA_HOME%\lib\tools.jar;
,点击确定
。
7.打开 C:\Program Files\Java
文件夹,并新建一个 scripts
文件夹。
进入该文件夹,新建一个新建文本文档.txt
并在里面写上:
@echo off
set Jpath=你的 Java 安装完整路径,最后不带/
setx JAVA_HOME "%Jpath%" /m
REG ADD "HKEY_CLASSES_ROOT\jarfile\shell\open\command" /ve /t REG_SZ /d "\"%Jpath%\bin\javaw.exe\" -jar \"%%1\" %%*" /f
REG ADD "HKEY_LOCAL_MACHINE\SOFTWARE\Classes\jarfile\shell\open\command" /ve /t REG_SZ /d "\"%Jpath%\bin\javaw.exe\" -jar \"%%1\" %%*" /f
例子:
@echo off
set Jpath=C:\Program Files\Java\zulu17.32.13-ca-fx-jdk17.0.2-win_x64
setx JAVA_HOME "%Jpath%" /m
REG ADD "HKEY_CLASSES_ROOT\jarfile\shell\open\command" /ve /t REG_SZ /d "\"%Jpath%\bin\javaw.exe\" -jar \"%%1\" %%*" /f
REG ADD "HKEY_LOCAL_MACHINE\SOFTWARE\Classes\jarfile\shell\open\command" /ve /t REG_SZ /d "\"%Jpath%\bin\javaw.exe\" -jar \"%%1\" %%*" /f
如果你使用安装包的形式安装了 Zulu
如果你用安装包形式安装了 Zulu,那么注册表 HKEY_CLASSES_ROOT\Zulu.jarfile\shell\open\command
会有一个用来双击打开的注册表键值,这是 Zulu 特定的。
OracleJDK 会放在 HKEY_CLASSES_ROOT\jarfile\shell\open\command
,这也是上面脚本中使用的路径。
因此,如果你安装过 Zulu,请将脚本调整为
@echo off
set Jpath=你的 Java 安装完整路径,最后不带/
setx JAVA_HOME "%Jpath%" /m
REG ADD "HKEY_CLASSES_ROOT\jarfile\shell\open\command" /ve /t REG_SZ /d "\"%Jpath%\bin\javaw.exe\" -jar \"%%1\" %%*" /f
REG ADD "HKEY_CLASSES_ROOT\Zulu.jarfile\shell\open\command" /ve /t REG_SZ /d "\"%Jpath%\bin\javaw.exe\" -jar \"%%1\" %%*" /f
REG ADD "HKEY_LOCAL_MACHINE\SOFTWARE\Classes\jarfile\shell\open\command" /ve /t REG_SZ /d "\"%Jpath%\bin\javaw.exe\" -jar \"%%1\" %%*" /f
REG ADD "HKEY_LOCAL_MACHINE\SOFTWARE\Classes\Zulu.jarfile\shell\open\command" /ve /t REG_SZ /d "\"%Jpath%\bin\javaw.exe\" -jar \"%%1\" %%*" /f
例子:
@echo off
set Jpath=C:\Program Files\Java\zulu17.32.13-ca-fx-jdk17.0.2-win_x64
setx JAVA_HOME "%Jpath%" /m
REG ADD "HKEY_CLASSES_ROOT\jarfile\shell\open\command" /ve /t REG_SZ /d "\"%Jpath%\bin\javaw.exe\" -jar \"%%1\" %%*" /f
REG ADD "HKEY_CLASSES_ROOT\Zulu.jarfile\shell\open\command" /ve /t REG_SZ /d "\"%Jpath%\bin\javaw.exe\" -jar \"%%1\" %%*" /f
REG ADD "HKEY_LOCAL_MACHINE\SOFTWARE\Classes\jarfile\shell\open\command" /ve /t REG_SZ /d "\"%Jpath%\bin\javaw.exe\" -jar \"%%1\" %%*" /f
REG ADD "HKEY_LOCAL_MACHINE\SOFTWARE\Classes\Zulu.jarfile\shell\open\command" /ve /t REG_SZ /d "\"%Jpath%\bin\javaw.exe\" -jar \"%%1\" %%*" /f
感谢评论区 “访客” 指出。
(提示没有权限就在别的地方处理完再复制)
一定记得把 你的 Java 安装完整路径,最后不带/
替换成你的实际 Java 安装路径(如下图)。
保存并将文件名改为java17.bat
(你设置的是什么版本的路径就改成什么,或是改为你喜欢的名字)。
重复几次直到覆盖你的所有 Java 版本。
或者路径只写到大版本,如 C:\Program Files\Java\zulu17
,相应更改你的 Java 文件夹名称,这样每次更新时删除老的文件夹,并重命名新的文件夹就可以了,而不需要更改脚本。
路径下面应该看起来有bin
、lib
文件夹,如果没有说明你找错了:
处理完后应该长这样:
这 5 行代码的意思是:
1.执行时不显示命令本身
2.设置Jpath
变量为你设置的目录
(设置变量后输入%Jpath%
就相当于输入了你设置的目录)
3.设置JAVA_HOME
环境变量到Jpath变量
(用于 Java 命令)
4.将注册表HKEY_CLASSES_ROOT\jarfile\shell\open\command
的默认键的键值设置为"Jpath变量\bin\javaw.exe" -jar "%1" %*
(用于双击直接打开 .jar 文件)
5.将注册表HKEY_LOCAL_MACHINE\SOFTWARE\Classes\jarfile\shell\open\command
的默认键的键值设置为"Jpath变量\bin\javaw.exe" -jar "%1" %*
(用于双击直接打开 .jar 文件)
8.打开一个新的管理员 PowerShell 或 CMD,输入java17
、java8
(或是你喜欢的名字)什么的就能看到切换效果了。
如果提示 错误: 拒绝访问注册表路径。错误: 拒绝访问。
,说明你没以管理员身份运行,切换失败。
如果提示 成功:指定的值已得到保存。操作成功完成。操作成功完成。
,说明切换成功。
注意:PowerShell 打开的时候环境变量就已经固定了,所以你需要新开一个才能看到切换效果。
当然,每次路径变更后你都需要调整一下这些脚本。
以下例子以 Java 8、Java 17、Java 21 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 版本。
由于 OracleJRE 限制太多,演示改为全 Azul Zulu。
注:Azul Zulu 和 OracleJRE 默认安装目录不同。
OracleJRE 默认安装目录在 C:\Program Files\Java\jre1.8.0_xxx
Azul Zulu 默认安装目录在 C:\Program Files\Zulu\zulu-8
请根据你的需要调整。
#1 安装包安装 Azul Zulu JDK 8
1. 访问 https://www.azul.com/downloads/ 。
2. 如图选择Java 8(LTS)
、Windows
、X86 64-bit
、JDK FX
,下载选择 .msi
。其他系统或架构请选择对应选项(点击图片可以放大)。
当然,如果你硬盘空间比较紧张也可以选择安装 JRE FX。
在 Java Package 处选择带 FX 的选项即包含 JavaFX。
4. 打开下载好的 zulu8.xx.x.xx-ca-fx-jdk8.x.xxx-win_x64.msi
,一路点击 NEXT
安装即可。
5. 安装完成,默认安装目录在 C:\Program Files\Zulu\zulu-8
(zulu-8 代表 Java 8,zulu-16 代表 Java 16)。
默认情况下,Zulu 安装器不会设置 JAVA_HOME
环境变量。
#2 解压安装 Azul Zulu JDK 17
无论是其他第三方构建还是其他版本,它们的解压安装方式都是一样的,如果你想安装其他版本,请照葫芦画瓢。
由于演示内使用的都是 Azul Zulu 兼容性较好,因此你也可以选择以安装包形式安装 Zulu。
1. 访问 https://www.azul.com/downloads/ 。
2. 如图选择Java 17(LTS)
、Windows
、X86 64-bit
、JDK FX
,下载选项选择 .zip
,其他系统或架构请选择对应选项(点击图片可以放大)。
当然,如果你硬盘空间比较紧张也可以选择安装 JRE FX。
在 Java Package 处选择带 FX 的选项即包含 JavaFX。
(如果你要安装 Java 16,由于 Java 16 是短期支持版本,目前 Zulu 已不再提供新版本的 Java 16,因此你需要先打开 Older Zulu versions
开关,才可以看到 Java 16。)
3.选择完后点击 .Zip
下载压缩包。
4. 用压缩软件打开,解压到 C:\Program Files\Zulu
(或你熟悉的目录)。
5. 解压完成,目录在 C:\Program Files\Zulu\zulu-17.xx.xx-ca-fx-jdk17.0.x-win_x64
。
6. 将 zulu-17.xx.xx-ca-fx-jdk17.0.x-win_x64
重命名为 zulu-17
。
*Zulu JRE/JDK 商业应用免费。
如果你是带独立显卡的笔记本电脑,别忘了在系统设置的图形设置中将刚刚安装各种版本的 java.exe
和 javaw.exe
设置为高性能。(路径为 Java 路径/bin
或 Java 路径/jre/bin
)每次更换版本后都需要设置。
#3 解压安装 Azul Zulu JDK 21
照葫芦画瓢即可。
#4 (可选)配置环境变量与 Java 版本快速切换
仅适用于 Windows 系统,Linux 系统使用 alternatives --config java
命令即可轻松切换默认 Java 版本。
此版本根据 Azul Zulu 进行了调整,部分路径会有所不同,如果安装了 OracleJRE 请参考旧版本演示。
1. 左下角的系统搜索直接搜索 编辑系统环境变量
并打开或是在控制面板中打开。
2. 点击 环境变量(N)…
。
3. 检查 用户变量
中是否有带有 Java 的变量,有则将其删除。
4. 在 系统变量
中找到 Path
并双击打开,在弹出的 编辑环境变量
窗口中删除与 Java 有关的值。
如:C:\Program Files\Java\jre1.8.0_311
和 C:\Program Files (x86)\Common Files\Oracle\Java\javapath
以及 C:\Program Files\Zulu\zulu-8\bin\
和 C:\Program Files\Zulu\zulu-17\bin\
5. 继续在此窗口中点击 新建(N)
分三条输入 %JAVA_HOME%\bin
和 %JAVA_HOME%\jre\bin
和 C:\Program Files\Zulu\scripts
,点击确定
。
(图片是旧版本,忽略即可)
注:C:\Program Files\Zulu\scripts
是用于快速切换脚本的,如果你放在其他文件夹,请调整此值。
6. 在 系统变量
中找找有没有 JAVA_HOME,如果没有则点击新建(W)
新建一个,变量名(N)处填写 JAVA_HOME
,变量值(N)处填写 <你的 Java 安装目录>
,点击 确定
。如图(图片是旧版本,忽略即可):
例如:C:\Program Files\Zulu\zulu-8
再次点击 新建(W)
,变量名(N)处填写 CLASSPATH
,变量值(N)处填写 .;%JAVA_HOME%\lib\dt.jar;%JAVA_HOME%\lib\tools.jar;
,点击 确定
。
7.打开 C:\Program Files\Zulu
文件夹,并新建一个 scripts
文件夹。(此文件夹路径是对应第 5 部路径的)
进入该文件夹,新建一个 新建文本文档.txt
并在里面写上:
@echo off
set Jpath=你的 Java 安装完整路径,最后不带/
setx JAVA_HOME "%Jpath%" /m
REG ADD "HKEY_CLASSES_ROOT\jarfile\shell\open\command" /ve /t REG_SZ /d "\"%Jpath%\bin\javaw.exe\" -jar \"%%1\" %%*" /f
REG ADD "HKEY_CLASSES_ROOT\Zulu.jarfile\shell\open\command" /ve /t REG_SZ /d "\"%Jpath%\bin\javaw.exe\" -jar \"%%1\" %%*" /f
REG ADD "HKEY_LOCAL_MACHINE\SOFTWARE\Classes\jarfile\shell\open\command" /ve /t REG_SZ /d "\"%Jpath%\bin\javaw.exe\" -jar \"%%1\" %%*" /f
REG ADD "HKEY_LOCAL_MACHINE\SOFTWARE\Classes\Zulu.jarfile\shell\open\command" /ve /t REG_SZ /d "\"%Jpath%\bin\javaw.exe\" -jar \"%%1\" %%*" /f
例子:
@echo off
set Jpath=C:\Program Files\Zulu\zulu-8
setx JAVA_HOME "%Jpath%" /m
REG ADD "HKEY_CLASSES_ROOT\jarfile\shell\open\command" /ve /t REG_SZ /d "\"%Jpath%\bin\javaw.exe\" -jar \"%%1\" %%*" /f
REG ADD "HKEY_CLASSES_ROOT\Zulu.jarfile\shell\open\command" /ve /t REG_SZ /d "\"%Jpath%\bin\javaw.exe\" -jar \"%%1\" %%*" /f
REG ADD "HKEY_LOCAL_MACHINE\SOFTWARE\Classes\jarfile\shell\open\command" /ve /t REG_SZ /d "\"%Jpath%\bin\javaw.exe\" -jar \"%%1\" %%*" /f
REG ADD "HKEY_LOCAL_MACHINE\SOFTWARE\Classes\Zulu.jarfile\shell\open\command" /ve /t REG_SZ /d "\"%Jpath%\bin\javaw.exe\" -jar \"%%1\" %%*" /f
如果你用安装包形式安装了 Zulu,那么注册表HKEY_CLASSES_ROOT\Zulu.jarfile\shell\open\command
和HKEY_LOCAL_MACHINE\SOFTWARE\Classes\Zulu.jarfile\shell\open\command
会有一个用来双击打开的注册表键值,这是 Zulu 才有的。
OracleJDK 会放在HKEY_CLASSES_ROOT\jarfile\shell\open\command
和HKEY_LOCAL_MACHINE\SOFTWARE\Classes\jarfile\shell\open\command
。
如果你不使用 Zulu,可以把脚本第 5 行和第 7 行删掉,不过留着也不会有什么坏处就是了。
感谢评论区 “访客” 指出 Zulu 特定注册表。
(提示没有权限就在别的地方处理完再复制回去)
一定记得把 你的 Java 安装完整路径,最后不带/
替换成你的实际 Java 安装路径(如下图)。
保存并将文件名改为 java17.bat
(你设置的是什么版本的路径就改成什么,或是改为你喜欢的名字)。
重复几次直到覆盖你的所有 Java 版本。
(图片是旧版本,忽略路径即可)
由于我们上面路径只写到大版本,如 C:\Program Files\Java\zulu17
,相应更改你的 Java 文件夹名称,这样每次更新时删除老的文件夹,并重命名新的文件夹就可以了,而不需要更改脚本。
路径下面应该看起来有bin
、lib
文件夹,如果没有说明你找错了:
(图片是旧版本,忽略路径即可)
处理完后应该长这样:
(图片是旧版本,忽略路径即可)
这 7 行代码的意思是:
1. 执行时不显示命令本身
2. 设置Jpath
变量为你设置的目录
(设置变量后输入%Jpath%
就相当于输入了你设置的目录)
3. 设置JAVA_HOME
环境变量到Jpath变量
(用于 Java 命令)
4. 将注册表HKEY_CLASSES_ROOT\jarfile\shell\open\command
的默认键的键值设置为"Jpath变量\bin\javaw.exe" -jar "%1" %*
(用于双击直接打开 .jar 文件)
5. 将注册表HKEY_CLASSES_ROOT\Zulu.jarfile\shell\open\command
的默认键的键值设置为"Jpath变量\bin\javaw.exe" -jar "%1" %*
(用于双击直接打开 .jar 文件)
6. 将注册表HKEY_LOCAL_MACHINE\SOFTWARE\Classes\jarfile\shell\open\command
的默认键的键值设置为"Jpath变量\bin\javaw.exe" -jar "%1" %*
(用于双击直接打开 .jar 文件)
7. 将注册表HKEY_LOCAL_MACHINE\SOFTWARE\Classes\Zulu.jarfile\shell\open\command
的默认键的键值设置为"Jpath变量\bin\javaw.exe" -jar "%1" %*
(用于双击直接打开 .jar 文件)
8.打开一个新的管理员 PowerShell 或 CMD,输入java17
、java8
(或是你喜欢的名字)什么的就能看到切换效果了。
如果提示 错误: 拒绝访问注册表路径。错误: 拒绝访问。
,说明你没以管理员身份运行,切换失败。
如果提示 成功:指定的值已得到保存。操作成功完成。操作成功完成。
,说明切换成功。
注意:PowerShell 或 CMD 打开的时候环境变量就已经固定了,所以你需要新开一个才能看到切换效果。
当然,每次路径变更后你都需要调整一下这些脚本。
有时候不能直接点开 .jar 文件?
如果你没有以安装的方式安装过 JDK/JRE
那么你的注册表里面什么也没有,也就不能双击打开 .jar 文件了。
你需要将下面这段代码复制进一个 xxx.txt
文本文档中,并改名为 xxx.bat
,然后右键 以管理员身份运行(A)
运行。
这段代码可以自动帮你创建一些双击打开 .jar 文件需要用到的注册表。(修改自 djangofan/jar_association.bat )
注:需要事先设置 JAVA_HOME
环境变量。
@ECHO off
SETLOCAL ENABLEDELAYEDEXPANSION
ECHO JAVA_HOME is %JAVA_HOME%
IF NOT DEFINED JAVA_HOME GOTO :FAIL
REG ADD "HKCR\jarfile" /ve /t REG_SZ /d "Executable Jar File" /f
REG ADD "HKCR\jarfile\shell" /ve /f
REG ADD "HKCR\jarfile\shell\open" /ve /f
REG ADD "HKCR\jarfile\shell\open\command" /ve /t REG_SZ /d "\"%JAVA_HOME%\bin\javaw.exe\" -jar \"%%1\" %%*" /f
REG ADD "HKLM\SOFTWARE\Classes\jarfile\shell" /ve /f
REG ADD "HKLM\SOFTWARE\Classes\jarfile\shell\open" /ve /f
REG ADD "HKLM\SOFTWARE\Classes\jarfile\shell\open\command" /ve /t REG_SZ /d "\"%JAVA_HOME%\bin\javaw.exe\" -jar \"%%1\" %%*" /f
ECHO SUCCESS!
PAUSE
GOTO EOF
:FAIL
ECHO FAILED!
PAUSE
如果你使用 Zulu
Zulu 的注册表路径不同于 Oracle,保险起见请使用此脚本
@ECHO off
SETLOCAL ENABLEDELAYEDEXPANSION
ECHO JAVA_HOME is %JAVA_HOME%
IF NOT DEFINED JAVA_HOME GOTO :FAIL
REG ADD "HKCR\jarfile" /ve /t REG_SZ /d "Executable Jar File" /f
REG ADD "HKCR\jarfile\shell" /ve /f
REG ADD "HKCR\jarfile\shell\open" /ve /f
REG ADD "HKCR\jarfile\shell\open\command" /ve /t REG_SZ /d "\"%JAVA_HOME%\bin\javaw.exe\" -jar \"%%1\" %%*" /f
REG ADD "HKLM\SOFTWARE\Classes\jarfile\shell" /ve /f
REG ADD "HKLM\SOFTWARE\Classes\jarfile\shell\open" /ve /f
REG ADD "HKLM\SOFTWARE\Classes\jarfile\shell\open\command" /ve /t REG_SZ /d "\"%JAVA_HOME%\bin\javaw.exe\" -jar \"%%1\" %%*" /f
REG ADD "HKCR\Zulu.jarfile" /ve /t REG_SZ /d "Executable Jar File" /f
REG ADD "HKCR\Zulu.jarfile\shell" /ve /f
REG ADD "HKCR\Zulu.jarfile\shell\open" /ve /f
REG ADD "HKCR\Zulu.jarfile\shell\open\command" /ve /t REG_SZ /d "\"%JAVA_HOME%\bin\javaw.exe\" -jar \"%%1\" %%*" /f
REG ADD "HKLM\SOFTWARE\Classes\Zulu.jarfile\shell" /ve /f
REG ADD "HKLM\SOFTWARE\Classes\Zulu.jarfile\shell\open" /ve /f
REG ADD "HKLM\SOFTWARE\Classes\Zulu.jarfile\shell\open\command" /ve /t REG_SZ /d "\"%JAVA_HOME%\bin\javaw.exe\" -jar \"%%1\" %%*" /f
ECHO SUCCESS!
PAUSE
GOTO EOF
:FAIL
ECHO FAILED!
PAUSE
感谢评论区 “访客” 指出。
好像直接操作最下层的注册表就行了,上面会自动创建,白写了。
手动执行
你仍然可以打开命令行,输入 java -jar 文件.jar
来运行这些文件。
1.按 Win徽标键+r
打开运行窗口输入 regedit
回车。(打开注册表编辑器
2.找到 计算机\HKEY_CLASSES_ROOT\jarfile\shell\open\command
,没有则手动创建。
3. 在“(默认)”上右键,选择 修改(M)...
将前面的路径修改为正确的路径:"路径\bin\javaw.exe" -jar "%1" %*
如果你的缺少“-jar”请添加上,点击 确定
即可生效。
3.有可能 计算机\HKEY_LOCAL_MACHINE\SOFTWARE\Classes\jarfile\shell\open\command
也有这个键,如果有则执行相同的步骤,没有则手动创建。
在 Minecraft 启动器中使用
这里用 Azul Zulu 17 做举例,如果你安装了其他版本的 Java,同理选择其他版本即可。
一般来说,第三方启动器会自动检测到你安装的 JDK/JRE。
但由于我们使用手动的方式安装了 Zulu 17,部分启动器可能检测不到,所以我们需要手动指定 Java 目录来让启动器使用。
如果你使用官方启动器,那么你不需要操心这些,因为官方启动器自带 JRE。
如果你部署了上文的快速切换,建议不要在启动器将 Java 路径设置为 javaw,以免切换后导致版本不一致。
PrismLauncher/MultiMC 启动器
支持 Windows、Linux、macOS 系统。下载地址:https://multimc.org推荐使用:https://prismlauncher.org/
*不建议更改全局设置。
MultiMC 启动器分支较多,此处使用 PrismLauncher 演示。
1. 右键要更改的实例,选择 编辑(E)…
(点击图片可以放大)。
2.A 点击 设置
勾选 Java 路径(L)
点击 自动检测……
,运气好的话启动器已经自动检测到了刚刚安装的 Java,选择对应版本即可。
(1.8.0 或 8.0.x 代表 Java 8,17.0.x 代表 Java 17)。
2.B.1. 如果你运气不好,启动器没有检测到对应版本 Java,那么点击 设置
勾选 Java 路径(L)
点击 浏览
。
2.B.2. 找到对应版本,如 Java 17 C:\Program Files\Zulu\zulu-17\bin
文件夹里的 javaw.exe
并选择。
注意路径会根据你安装的版本改变,请选择正确的文件夹。
(其他系统请选择 路径/bin/java
)(1.8.0 或 8.0.x 代表 Java 8,16.0.x 代表 Java 16)。
4.更改完成,点击关闭即可。
HMCL 启动器
支持 Windows、Linux、macOS 系统。
下载地址:https://hmcl.huangyuhui.net/download
*不建议更改全局设置,请先打开版本隔离,可以参考这篇文章。
*目前 HMCL 已经可以自动帮你选择合适的 Java 版本。
1. 点击 版本列表
,找到要修改的游戏版本,点击右边的:
(点击图片可以放大)。
2. 选择 游戏管理
。
3. 勾选 启用游戏特定设置(不影响其他游戏版本)
,点击 Java 路径
右边的 V
。
4.A. 如果你运气好的话,启动器已经自动检测到了刚刚安装的 Java,选择对应版本即可。(1.8.0 或 8.0.x 代表 Java 8,17.0.x 代表 Java 17)。
4.B. 如果你运气不好,启动器没有检测到对应版本 Java,那么请点击 自定义
,然后点击右边的文件夹图标
。
4.B.1. 找到对应版本,如 Java 17 C:\Program Files\Zulu\zulu-17\bin
文件夹里的 javaw.exe
并选择。
注意路径会根据你安装的版本改变,请选择正确的文件夹。
(其他系统请选择 路径/bin/java
)(1.8.0 或 8.0.x 代表 Java 8,17.0.x 代表 Java 17)。
5. 完成,返回即可
PCL2 启动器
支持 Windows 系统。
下载地址:https://afdian.com/@LTCat (点击动态,找到正式版永久下载地址)
*不建议更改全局设置,请先打开版本隔离,可以参考这篇文章。
*目前 PCL2 已经可以自动帮你选择合适的 Java 版本。
1. 点击设置
,然后点击自动搜索
。
2.A. 运气好的话,启动器已经自动检测到了刚刚安装的 Java,交由启动器自动判断即可(1.8.0 或 8.0.x 代表 Java 8,17.0.x 代表 Java 17)。
2.B.1. 如果你运气不好,启动器没有检测到 Java 17,或是选择了错误的 Java 版本。
2.B.2. 点击 设置
,然后点击 手动导入
。
2.B.3. 找到对应版本,如 Java 17 C:\Program Files\Zulu\zulu-17\bin
文件夹里的 javaw.exe
并选择。
注意路径会根据你安装的版本改变,请选择正确的文件夹。
(其他系统请选择 路径/bin/java
)(1.8.0 或 8.0.x 代表 Java 8,17.0.x 代表 Java 17)。
2.B.4. 没有意外的话,Java 版本列表里面应该已经有了 Java 17,并显示手动导入。
2.B.5. 返回 启动
点击 版本选择
。
2.B.6. 找到要修改的版本,点击右边的 齿轮按钮
。
2.B.7. 点击 设置
在 游戏 Java
处选择合适的 Java。
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,便于 JVM 加载class文件,
.;
表示当前路径,tools.jar
和dt.jar
为类库路径。
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"
。
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
查看是否已配置成功。
javaw.exe 和 java.exe 的区别是什么?
- java.exe 用于启动 Java 应用程序。它与一个控制台相关联,用于显示输出/错误。
- javaw.exe 全称是 Java Windowed,同样用于启动 Java 应用程序。但不与控制台关联,所以不显示输出/错误。主要用于启动基于 GUI 的应用程序。
简单来说,使用 java.exe 会出现控制台窗口,而使用 javaw.exe 不会显示控制台窗口。
2024-08-02 插播一条广告
Minecraft、Prismlauncher、Java 下载慢,CurseForge、Modrinth、Spigot 访问慢可以考虑使用收费的游戏加速器(几个品牌是独立的,都可以兑换一次)。
- 游戏加速器效果详见测评贴:https://bbs.pha.pub/threads/281
- 如果只需要下载加速,你也可以尝试使用免费的 UsbEAm Hosts Editor:https://bbs.pha.pub/threads/140
有周边网站加速效果的奇游系加速器找我们合作给我了兑换码,新用户或没有兑换过其他人兑换码的用户兑换后可以领取 3 天试用会员(几个品牌是独立的,都可以兑换一次)。
兑换后我也可以获得一点点奖励,具体还没谈好,获取到的奖励将会用于 PHA 的日常开销。
此外他们说如果有没加速效果的启动器、服务器等可以找他们客服添加。
仍然有不明白的地方?
欢迎留言提出建议。
无评论