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

1 篇文章 0 订阅
1 篇文章 0 订阅

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

更新内容:

  • jre21加入javafx模块版本,以支持免环境启动HMCL(需要额外的35MB)
  • jre21添加--compress=zip-9参数,占用内存更小
  • 所有使用的jdk/java/jre/jfx均使用Adoptium Eclipse Temurin/HMCL下载的jfx

精简效果:

59f67882eb604d319f61ff5440d5ae0b.png9f3132fd09a540059a30e797e64e6b24.png

 精简前216MB —> 精简后52.2MB!!  完美启动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位。

精简过程:

核心是使用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)
  • 其他参数为剔除一些相对无用功能和组件

添加模块:

添加基础模块:

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

 尝试使用制作的jre启动Minecraft,得到崩溃日志:

        hmcl: minecraft.log

        PCL2:游戏崩溃前的输出.log

把日志给AI分析,问出缺少的模块名加入命令,打包jre再启动,崩溃再分析,以此循环直到正常启动

        可用AI:chatgpt,claude,天工,文心一言等

最后再加上一些需要的参数即可得到打包瘦身的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.managementjdk.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版

  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值