使用jdeps和jlink构建Minecraft精简JRE时遇Jar文件系统缺失错误
解决方案
问题根源:你的自定义JRE缺少
jdk.zipfs模块,该模块提供Jar文件系统的核心支持,Minecraft启动时需要通过它加载Jar内的资源,而jdeps的静态分析没检测到这个动态依赖(因为Minecraft可能通过反射或动态方式调用该模块的功能)。修复步骤:
- 修改
jlink命令,将jdk.zipfs添加到模块列表中:modules="java.base,java.compiler,java.desktop,java.management,java.naming,java.rmi,java.scripting,java.security.jgss,java.sql,jdk.jfr,jdk.unsupported,jdk.zipfs" jlink --no-header-files --compress=2 --no-man-pages --add-modules $modules --output 'custom-jre' - 用重新生成的
custom-jre运行Minecraft客户端,验证错误是否消失。
- 修改
补充说明:对于Minecraft这类使用大量动态加载、反射的复杂应用,
jdeps的静态依赖分析无法完全覆盖所有运行时需要的模块,遇到这类情况需要根据报错信息手动补充缺失的模块。
内容的提问来源于stack exchange,提问作者paoloose
相关产品推荐
相关产品推荐

