【精简java】仅有50MB的Minecraft精简版java(jdk17,21)

精简java运行环境,仅占用50MB, 适配Minecraft1.19,1.20,1.21

精简效果

 精简前326MB —> 精简后50.1MB!!  完美启动Minecraft


下载地址(蓝奏云)

版本提示

  • 带-jfx后缀的mcjre支持HMCL免环境启动,即包含javafx模块
  • 高版本Java向下兼容低版本Minecraft
  • 请注意,当使用某些与操作系统不匹配的Java版本(32或64位)、使用某些Java 7版本或安装了多个版本的Java玩Minecraft Java版时可能会引发某些用户体验问题。
  • 1.1217w13a)开始,运行Minecraft的最低要求是Java 8。如果玩家不知道他们的电脑是否安装了Java 8,那么安装程序默认会自动安装并使用支持Minecraft运行的Java。
  • 1.1721w19a)开始,运行Minecraft的最低要求是Java 16。
  • 1.181.18-pre2)开始,运行Minecraft的最低要求是Java 17。
  • 1.20.524w14a)开始,运行Minecraft的最低要求是Java 21,且操作系统要求为64位。

更新内容

  • jre21加入javafx模块版本,以支持免环境启动HMCL(需要额外的35MB)
  • jre21添加--compress=zip-9参数,占用内存更小
  • 所有使用的java模块均取自Adoptium openjdk和HMCL官方使用的openjfx

使用指南

免环境启动HMCL方法

  1. 解压mcjre-jfx,与HMCL.exe置于同一文件夹内
  2. 将mcjre-jfx文件夹重命名为“jre-x64”
  3. 确保jre-x64为java根文件夹,例如:
  4. 在新设备启动HMCL(或删除C:\Users\你的用户名\AppData\Roaming\.hmcl\dependencies下的所有文件),直接进入HMCL主程序不弹出下载依赖启动框即成功

设置MC默认Java(可选)

  1. 打开隐藏的文件“hmcl.json”
  2. 找到"global"组中的以下两项:
    "javaDir": "",
    "java": "Auto",
    将其替换为:
    "javaDir": ".\\jre-x64\\bin\\java.exe",
    "java": "Custom",
  3. 示例:

精简过程

核心是使用jlink工具,导出需要的jmod模块

基础命令

"<jlink路径>" --module-path <其他模块路径> --compress=zip-9 --strip-debug --no-header-files --no-man-pages --strip-debug --strip-java-debug-attributes --dedup-legal-notices=error-if-not-same-content --output <输出文件夹名> --add-modules <添加的jmod模块1,添加的jmod模块2,...>
  • --output:输出jre文件夹名
  • --module-path:指定模块路径,多个路径用分号";"隔开(可选)
  • --add-modules:指定添加的模块
  • --compress:设置压缩级别,java17为0至2,java21为zip-1至zip-9(可选)
  • 其他参数为剔除一些相对无用的功能和组件(可选)

精简模块

  1. 添加基础模块:
    java.base,java.desktop,java.instrument,java.management,java.naming,java.prefs,java.rmi,java.scripting,java.sql,jdk.compiler,jdk.httpserver,jdk.unsupported,jdk.crypto.ec
  2. 尝试使用导出的jre启动Minecraft,得到崩溃日志:
    hmcl: minecraft.log
    PCL2:游戏崩溃前的输出.log
  3. 把日志给AI分析,问出缺少的模块名加入命令,打包jre再启动,崩溃再分析,以此循环直到能正常启动MC
    可用AI:chatgpt,claude,天工,文心一言等
  4. 最后再加上一些需要的参数即可得到打包瘦身的jre

精简版MCJRE含有的模块

游戏主程序所需模块

java.base
java.logging
java.naming
java.xml
jdk.sctp
jdk.unsupported
java.desktop
java.sql
jdk.charsets
java.net.http
jdk.xml.dom
jdk.jsobject
jdk.jfr
jdk.net
java.rmi
jdk.crypto.ec
jdk.nio.mapmode
jdk.naming.dns
jdk.zipfs
java.scripting
jdk.dynalink
java.instrument
java.compiler
java.management
jdk.management(1.20FML新增)

 HMCL所需的额外模块:(版本19.0.2.1)

javafx.base
javafx.controls
javafx.graphics
javafx.media
javafx.web

完整命令(Windows)

REM #adopt 21& jfx
"<jlink路径>"  --module-path <jfx模块路径> --compress=zip-9 --strip-debug --no-header-files --no-man-pages --strip-debug --strip-java-debug-attributes --dedup-legal-notices=error-if-not-same-content --output mcjre-21.0.4+7-jfx --add-modules java.base,java.logging,java.naming,java.xml,jdk.sctp,jdk.unsupported,java.desktop,java.sql,jdk.charsets,java.net.http,jdk.xml.dom,jdk.jsobject,jdk.jfr,jdk.net,java.rmi,jdk.crypto.ec,jdk.nio.mapmode,jdk.naming.dns,jdk.zipfs,java.scripting,jdk.dynalink,java.instrument,java.compiler,java.management,jdk.management,javafx.base,javafx.controls,javafx.graphics,javafx.media,javafx.web

REM #adopt 21
"<jlink路径>"  --compress=zip-9 --strip-debug --no-header-files --no-man-pages --strip-debug --strip-java-debug-attributes --dedup-legal-notices=error-if-not-same-content --output mcjre-21.0.4+7 --add-modules java.base,java.logging,java.naming,java.xml,jdk.sctp,jdk.unsupported,java.desktop,java.sql,jdk.charsets,java.net.http,jdk.xml.dom,jdk.jsobject,jdk.jfr,jdk.net,java.rmi,jdk.crypto.ec,jdk.nio.mapmode,jdk.naming.dns,jdk.zipfs,java.scripting,jdk.dynalink,java.instrument,java.compiler,java.management,jdk.management

REM #adopt 17& jfx
"<jlink路径>"  --module-path <jfx模块路径> --compress=2 --strip-debug --no-header-files --no-man-pages --strip-debug --strip-java-debug-attributes --dedup-legal-notices=error-if-not-same-content --output mcjre-17.0.8+7-jfx --add-modules java.base,java.logging,java.naming,java.xml,jdk.sctp,jdk.unsupported,java.desktop,java.sql,jdk.charsets,java.net.http,jdk.xml.dom,jdk.jsobject,jdk.jfr,jdk.net,java.rmi,jdk.crypto.ec,jdk.nio.mapmode,jdk.naming.dns,jdk.zipfs,java.scripting,jdk.dynalink,java.instrument,java.compiler,java.management,jdk.management,javafx.base,javafx.controls,javafx.graphics,javafx.media,javafx.web

REM #adopt 17
"<jlink路径>"  --compress=2 --strip-debug --no-header-files --no-man-pages --strip-debug --strip-java-debug-attributes --dedup-legal-notices=error-if-not-same-content --output mcjre-17.0.8+7 --add-modules java.base,java.logging,java.naming,java.xml,jdk.sctp,jdk.unsupported,java.desktop,java.sql,jdk.charsets,java.net.http,jdk.xml.dom,jdk.jsobject,jdk.jfr,jdk.net,java.rmi,jdk.crypto.ec,jdk.nio.mapmode,jdk.naming.dns,jdk.zipfs,java.scripting,jdk.dynalink,java.instrument,java.compiler,java.management,jdk.management

配置好PATH的情况下,可以将路径改成 jlink


文件扫描结果


参考文章

java精简jre打包(jdk14、15)_水瓶座的鬼才的博客-CSDN博客_jdk精简

中文Minecraft Wiki - Java版

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值