如何使用HMCL啟動器配置Java版Minecraft


1. Backgroud

Minecraft,我的世界,眾所周知,分為 Java 版和基岩版。Java 版在運行時必須安裝 Java 運行環境。

對於官方版本的游戲,官方包中自帶了 Java Runtime Environment。但是對於啟動器版本,啟動器一般不會集成這些元件,並且有些啟動器在使用的時候就需要調用 Java 來啟動,所以 Java 是必須要安裝的。

Java 分為 jre (Java Runtime Environment) 與 jdk (Java Development Kit)。事實上,jdk 涵蓋了 jre 的全部功能。Oracle 官網對於這兩種工具包給出了圖形解釋。

jrenjdk
圖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 的時候,會發生警告。

hmclwarning
圖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


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM