内置 JRE 分发
许多服务器主和整合包作者都面临一个共同的难题:玩家的电脑环境千差万别,部分玩家可能仍在使用旧版 Java,导致无法启动需要新版 Java 的游戏或特定 Mod。
为了解决这个问题,方法是在整合包中内置一个指定版本的 Java 环境,确保所有玩家都使用这个统一的环境来启动游戏,而不是依赖其系统上可能存在问题的 Java。
本章将介绍两种配置内置 JRE 的方法。
使用内置功能
HMCL 提供了内置的便携式 Java 检测与加载功能,这是为整合包配置 Java 环境最简单、最推荐的方法。
HMCL 启动器外壳 (HMCL.exe 或 HMCL.sh) 在启动时,会自动检测并优先使用与其同级目录下的特定 JRE 文件夹。
重要提示
此功能依赖于 HMCL 启动器外壳(即HMCL.exe或HMCL.sh文件)。启动器内部的“下载更新”功能仅更新核心文件 (HMCL.jar),而不会更新外壳。
因此,制作整合包时,请务必从官网下载最新版的启动器,以确保此功能可用且行为符合预期。
| 文件夹名称 | 对应系统架构 | 优先级与说明 |
|---|---|---|
jre-x64 | Windows / Linux / macOS x86 64位 | (最常用)• Windows: 优先级 2。• 其他系统: 脚本自动匹配架构。• 最佳实践推荐此项。 |
jre-x86 | Windows / Linux x86 32位 | • Windows: 优先级 3。• 其他系统: 脚本自动匹配架构。 |
jre-arm64 | Windows on ARM 64位Linux / macOS ARM 64位 (如 M1/M2 Mac) | • Windows: 优先级 1 (最高)。• 其他系统: 脚本自动匹配架构。 |
jre-arm32 | Linux ARM 32位 | • 仅用于 HMCL.sh,脚本根据系统架构自动选择。 |
jre-loongarch64 | LoongArch 64位 | • 仅用于 HMCL.sh,脚本根据系统架构自动选择。 |
总结:
Windows (HMCL.exe): 严格按照 jre-arm64 → jre-x64 → jre-x86 的固定顺序查找,并使用找到的第一个。
Linux / macOS (HMCL.sh): 根据当前系统架构,直接查找与之匹配的文件夹。
回退机制: 如果在同级目录下未找到任何可用的 JRE 文件夹,HMCL 将会回退至使用系统环境中安装的 Java。
创建自定义启动脚本
如果你的整合包使用的是原始的 HMCL.jar 文件(而非 .exe 或 .sh 包装器),则可以通过创建自定义脚本来指定 JRE。
首先,规划好你的整合包目录。一个典型的结构如下:
MyModpack/
├── .minecraft/ <-- Minecraft 核心文件夹
│ ├── assets/
│ ├── libraries/
│ ├── versions/
│ └── HMCL.jar <-- 必须是这个文件名!
├── jre-x64/ <-- 你准备的 64 位 JRE
│ ├── bin/
│ ├── lib/
│ └── ...
└── 启动游戏.bat <-- 我们即将创建的启动脚本注意:HMCL 的 JAR 文件名必须是
HMCL.jar。
像HMCL-3.5.x.jar这样带版本号的文件名将无法被正确识别。
你可以从官网下载适用于 macOS 或 Linux 的版本,它们都是通用的.jar文件。
然后,创建启动脚本:
# Windows(.bat)
@echo off
cd /d %~dp0
start "HMCL" ".\jre-x64\bin\javaw.exe" -jar ".\.minecraft\HMCL.jar"
exit# Linux/macOS(.sh)
#!/bin/bash
cd "$(dirname "$0")"
./jre-x64/bin/java -jar ./.minecraft/HMCL.jarLinux/macOS 启动脚本记得赋予执行权限。 现在,玩家只需双击对应的脚本文件即可使用你指定的 JRE 启动游戏。
HMCL 启动后,也会默认使用这个 JRE 来启动 Minecraft。