文章来自我的个人博客,欢迎访问
repo-kristx.github.io
博文存档

文章目录

  • 1. Backgroud
  • 2. Followed Steps
    • 2.1 Java Environment Configuration
    • 2.2 Java Development Kit
    • 2.3 HMCL Installer
  • 3. Warnings
  • 4. References

1. Backgroud

Minecraft,我的世界,众所周知,分为 Java 版和基岩版。Java 版在运行时必须安装 Java 运行环境。

对于官方版本的游戏,官方包中自带了 Java Runtime Environment。但是对于启动器版本,启动器一般不会集成这些元件,并且有些启动器在使用的时候就需要调用 Java 来启动,所以 Java 是必须要安装的。

Java 分为 jre (Java Runtime Environment) 与 jdk (Java Development Kit)。事实上,jdk 涵盖了 jre 的全部功能。Oracle 官网对于这两种工具包给出了图形解释。


图1 Oracle 对于 jre 和 jdk 的定义 docs.oracle.com

非常明显,jdk 相较于 jre,多了 Java LanguageTools & Tool APIs ,也就是 Java 的开发部分。

问题来了,对于 Minecraft,我们到底需要 jdk 还是 jre 呢?

一位 BMCL 的开发者给出了说法

MC需要启动器的原因说到底只有一个,因为他是用Java写成的。

Java的运行需要JVM,但是JVM需要传入相应的参数才能让一个Java程序正确的运行。
举个简单的例子,网上下载得到的一个可执行的jar包,是不能像exe一样双击运行的。需要用命令行调用java -jar a.jar才能够执行,而启动器最核心的功能就是完成这个过程。

但是如果一个程序复杂到一定程度之后,是不可能一个jar搞定所有功能的,否则会有很复杂的依赖以及人员之间的协调成本,这种时候就需要将一个完整的程序拆成模块,各个模块之间可以按照一定的约定协同工作。

仔细看一些比较大的软件,比如 QQ,除了一些exe以外还有大量的dll文件存在,这就是拆开后的结果。这种跑到Java下就会成为一个一个的jar包,但是Java允许jar包内嵌jar包解决依赖的问题。

然而实际上,如果将一个程序所需要的所有jar包全部打包起来,那么最终得到的jar包体积会非常恐怖,而且有一些软件的用户协议不允许这么打包,所以在启动阶段就需要加载许多jar包,开启一个Java程序的命令就会变成java -cp a.jar:b.jar:c.jar,需要一个一个将所用到的jar包列清楚。

这是MC启动器的最大的作用,也是 1.6版本之前的启动器主要在做的事情。


作者:bangbang93
链接:https://www.zhihu.com/question/49997128/answer/119951802
来源:知乎
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

不难看出,我们需要的是 jre,也就是运行环境。

2. Followed Steps

2.1 Java Environment Configuration

经过上文介绍,我们只需要下载 jre 即可运行。

既然如此,你可以选择从 Java 官网进行安装。

Java.com(选择 windows offline)

另外,也可以通过 MMP 的 Oracle 安装(这玩意儿老连不上 tmd)

Oracle.com

无脑安装即可

2.2 Java Development Kit

同样的,因为 jdk 内含 jre,所以安装 jdk 也有同等效力。但是 jdk 只能从 oracle 上安装,这样就导致我这样的人根本连进都进不去。

所以我找到了一系列的链接

  1. jdk 下载

    jdkdownload.com

  2. 清华大学开源镜像站 Tsinghua TUNA

    mirrors.tuna.tsinghua.edu.cn

  3. 中国科学技术大学 USTC

    mirrors.ustc.edu.cn

  4. Oracle 官方源

    Oracle.com

2.3 HMCL Installer

Hello Minecraft! Launcher

安装后运行即可

3. Warnings

用这个方法安装 jdk 还是 jre,都会造成一个问题,那就是在安装高版本的 java 的时候,会发生警告。


图2 报错。。。

我感觉这个问题是由于过高的 Java 版本造成的,因为 Minecraft 官方给出的解答是在 1.17版(21w19a)之后,必须使用 java 16 或更高版本,我认为是不是因为 Java 1.18 版本过高造成的这个问题。

但是这个问题事实上不影响运行。第三方平台给出的解释是:

DST Root CA X3 证书将于 2021年9月30日到期。这意味着在此之后那些不信任 ISRG Root X1 证书的旧设备在访问使用 Let’s Encrypt 证书的网站时将开始出现证书警告。不过有一个例外很重要:多亏了 DST Root CA X3 的特殊 “交叉签名” 机制,Let’s Encrypt 的证书依然可以在不信任 ISRG Root X1 证书的较旧的 Android 设备上正常工作。

交叉签名机制使得 Let’s Encrypt的证书的有效期限可以超过根证书的到期时间,此例外仅适用于 Android。

那该怎么办呢?对于大多数人来说,什么也不用做!我们已经准备好了新的证书发行机制,因此您的网站在大多数情况下会做正确的事,兼容非常广泛。

之后我会试验是否低版本的 Java 会使得这个错误消失。虽然这个警告无关紧要,但是毕竟看着难受。

至此,所有的安装过程全部结束。

4. References

  • minecraft.fandom.com. 教程/成功地启动游戏

如何使用HMCL启动器配置Java版Minecraft相关推荐

  1. java启动器_Minecraft Java版新启动器正式开放

    当我们第一次听到Launcher团队迅速走到我们办公桌前的脚步声时,我们感到紧张,但没有必要恐慌 - 他们带来了好消息!新的Launcher已经推出适用于Windows,MacOS和Linux的Jav ...

  2. Jaeger的客户端采样配置(Java版)(1),看这篇文章准没错

    echo "启动docker-compose" cd jaeger-service-provider && docker-compose up -d &&a ...

  3. 我的世界Java版(Minecraft:Java)数据包教程 (1)

    注:本教程仅适用于我的世界Java版,即Minecraft:Java 想要学会如何创建数据包,就得先知道数据包的历史(有时间的顺路可以了解一下运作原理),数据包是于Minecraft:Java 1.1 ...

  4. 树莓派运行java_【树莓派】用树莓派4可以流畅运行java版minecraft?

    这几天我闲的要命,正巧我的树莓派4到了,就想着来搞点什么事情 结果我就给raspbian arm32-hf搞上了mc1.12.2 正文开始 要的物品列表: 1.树莓派4b(废话 2.一个能装下rasp ...

  5. [Themeda启动器]用Java编写的Minecraft启动器

    启动器全部由本人一人编写完成,作为练手的作品.编写过程磕磕绊绊,大多时间都在查阅各种网上资料. 现在写下这篇文章以供后来者参考. 本启动器预计实现以下内容 启动器预计实现的功能 是否完成 项目名称 功 ...

  6. 【Minecraft】10分钟教你搭建我的世界Java版开服教程【Linux服务器+MCSManager管理面板】

    一个人玩游戏没啥意思,和朋友一块联机呢,距离太远,家庭局域网宽带又没有公网ip,你的朋友没办法与你联机,然而你只需要一台服务器即可搞定了:但是很多用户没没接触过相关的内容,具体的该怎么操作呢?下面我将 ...

  7. java制作我的世界_Minecraft Java版整合包制作教程

    本教程将带领你制作Minecraft Java版的整合包 不多BB教程来啦: 1:确认你的电脑安装了Java,若没安装,请先到官网下载安装:https://www.java.com/zh_CN/[注意 ...

  8. 安卓手机安装Java版MC,实现与电脑联机

    安卓手机使用MCinaBox启动器安装Java版我的世界(Minecraft)实现跨平台联机,并且可安装MOD. MCinaBox项目开源地址:https://github.com/AOF-Dev/M ...

  9. 我的世界Java版开服保姆级教程,Purpur 1.19

    Linux 使用 MCSM9 搭建 Minecraft 1.19 版服务器教程,用的Purpur1.19服务端. Purpur是插件服务端,支持安装插件,不支持MOD. 视频教程:https://ww ...

最新文章

  1. Navicat Premium
  2. 对字符串数组排序,使所有变位词都相邻(C++)
  3. mysql caching_Spring Caching抽象和Google Guava Cache
  4. redis系列:通过队列案例学习list命令 1
  5. 基于DotNet构件技术的企业级敏捷软件开发平台 - AgileEAS.NET - 权限管理
  6. 嵌入式系统——指令平均时钟数和运算速度MIPS计算
  7. Keras Model AttributeError:’str‘ object has no attribute ’call‘
  8. 移动通信原理B-------例题解答3
  9. pinterest类网站差异化发展 时光轴成稀饭网突围利器
  10. 成都高新南区 高新西区 东部新区 多边形范围点位 AOI 高德
  11. Unity 3D 入门小游戏 小球酷跑(上)
  12. 群晖邮箱服务器需要什么证书,群晖NAS邮件通知及两步验证登录详解
  13. python查询mysql decimal报错_【2020Python修炼记】MySQL之 表相关操作
  14. UVM:filed_automation
  15. 侯捷c++课程学习一
  16. 磁盘在计算机没显示win10,win10机械硬盘检测不到怎么解决?
  17. SAP那些事-理论篇-14-SAP中的财务管理理念
  18. Xmind基础教程-保存到印象笔记
  19. 视频特效-使用ffmpeg滤镜
  20. Linux网络延迟排查方法

热门文章

  1. JS运算符和运算符的优先级
  2. Ubuntu18.04使用docker安装jitsi-meet
  3. AMS1117-3.3
  4. python男孩_python爬虫:爬取男生喜欢的图片
  5. STM32嵌入式FLASH擦除与写入
  6. C#实现工厂模式简介--实现访问不同的数据库
  7. win7 下anaconda TensorFlow tensorboard使用
  8. matlab的imshow, image, imagesc区别
  9. UDS诊断系列介绍05-27服务
  10. 课程设计——基于JAVA的仓库管理系统