Package Details: hmcl-bin 3.6.12-4

Git Clone URL: https://aur.archlinux.org/hmcl-bin.git (read-only, click to copy)
Package Base: hmcl-bin
Description: A Minecraft Launcher which is multi-functional, cross-platform and popular.
Upstream URL: https://github.com/huanghongxun/HMCL
Licenses: GPL3
Conflicts: hmcl
Provides: hmcl
Replaces: hmcl-stable-bin
Submitter: so1ar
Maintainer: TTsdzb (hour-keeper)
Last Packager: hour-keeper
Votes: 13
Popularity: 0.31
First Submitted: 2021-10-04 12:37 (UTC)
Last Updated: 2025-04-06 05:51 (UTC)

Dependencies (2)

Required by (0)

Sources (4)

Pinned Comments

hour-keeper commented on 2025-04-06 06:29 (UTC) (edited on 2025-04-06 06:53 (UTC) by hour-keeper)

官方文档以及.sh脚本都会推荐使用liberica-jdk作为运行时,但.exe会推荐下载Microsoft Build of Openjdk作为运行时

TTsdzb commented on 2025-04-06 05:24 (UTC) (edited on 2025-04-06 06:01 (UTC) by TTsdzb)

现在hmcl启动后如果没有javafx的话会自动联网下载,建议将java-openjfx改为可选依赖。

已修改。经测试官方启动脚本并不会寻找运行时外的 OpenJFX,因此我们直接移除了该依赖。如果你不喜欢下载,请自行安装具有 JavaFX 库的运行时,并在必要时手动指定 HMCL_JAVA_HOMEJAVA_HOME 环境变量。

TTsdzb commented on 2025-04-02 14:38 (UTC)

自 3.6.12-2 起使用官方的 Shell 脚本替代了原先的独立 jar 文件。如果你需要找回原先的配置,请将 $XDG_CONFIG_PATH/hmcl/hmcl.json(一般为 ~/.config/hmcl/hmcl.json)移动到 ~/.hmcl.json

Latest Comments

« First ‹ Previous 1 2 3 4 5 Next › Last »

c1trus commented on 2024-03-13 03:08 (UTC)

考虑到现在 hmcl 对于缺失 javafx 的情况会自动下载所需的资源,我认为直接去除 java-openjfx 并不考虑任何搜索是一个可行的措施 但是 JAVA_HOME 和 java 必须配套,请至少 export PATH="$JAVA_HOME/bin:$PATH"

c1trus commented on 2024-03-13 02:53 (UTC)

默认的 java 与找到的包含 java-openjfx 的 java 不一致导致问题。

❯ which java
/usr/bin/java
❯ pacman -Qo java
/usr/bin/java 由 java-runtime-common 3-5 所拥有
❯ pacman -Ql java-openjfx | grep javafx | head -n 1 | cut -d / -f 5
liberica-jdk-full
❯ hmcl-bin
Error occurred during initialization of boot layer
java.lang.module.FindException: Module javafx.base not found
❯ /usr/lib/jvm/liberica-jdk-full/bin/java -jar /usr/share/java/hmcl-bin/hmcl-bin.jar
[10:48:47] [org.jackhuang.hmcl.Launcher.main/INFO] *** HMCL 3.5.6.241 ***
......(正常启动界面)

如果说通过设置 JAVA_HOME 本应当可以正确搜索,那么版本不一致可能是问题所在

❯ java -version
java version "17.0.10" 2024-01-16 LTS
Java(TM) SE Runtime Environment (build 17.0.10+11-LTS-240)
Java HotSpot(TM) 64-Bit Server VM (build 17.0.10+11-LTS-240, mixed mode, sharing)
❯ /usr/lib/jvm/liberica-jdk-full/bin/java -version
openjdk version "21.0.2" 2024-01-16 LTS
OpenJDK Runtime Environment (build 21.0.2+14-LTS)
OpenJDK 64-Bit Server VM (build 21.0.2+14-LTS, mixed mode, sharing)

Eeviriyi commented on 2024-03-11 01:31 (UTC)

please update the sha256sum

TTsdzb commented on 2024-03-10 02:15 (UTC)

hmcl-launch-script 的 sha256sum 不正确导致近两个版本均无法自动构建,请您修复一下,感谢

yataro commented on 2024-03-06 16:29 (UTC)

Could you fix the hashsums?

yataro commented on 2024-03-06 11:55 (UTC)

==> Validating source files with sha256sums...
    hmcl.desktop ... Passed
    hmcl-launch-script ... FAILED
    craft_table.png ... Passed
    LICENSE ... Passed
    hmcl-bin-3.5.6.239-1.jar ... Passed
==> ERROR: One or more files did not pass the validity check!

HinataAoi commented on 2024-02-25 14:00 (UTC) (edited on 2024-02-25 14:01 (UTC) by HinataAoi)

另外我之前提到的这个问题还是在,麻烦一并修改一下.把当时的内容粘贴过来了:

我这边出现了问题,因为我这边默认调用的jre是zulu-21-bin.而启动脚本最后一行--module-path指定的却是pacman查询的java-openjfx依赖的提供者的lib目录,在我这里就是指向了zulu-jre-fx-bin的lib目录.

导致的情况就是zulu-21-bin在尝试使用zulu-jre-fx-bin的lib目录

我不懂java,不清楚jre不同版本间是否能用彼此的lib目录,但我这里确实出现了问题.会提示"Module javafx.base not found"

也许可以把最后一行里的java改成"${JAVA_HOME}"/bin/java?

另外hmcl.desktop里抄错抄成exec=hmcl-stable-bin了

HinataAoi commented on 2024-02-25 13:57 (UTC)

筛选jfx的部分我也不知道能不能再改进,我上面给出的就是从你们之前的版本抄的,不知道有没有更好的筛选方法.不过可以确定的是类似'java-openjfx-bin'这个包就有问题.因为这个包没按照规范把jfx存在/usr/lib下.不过我觉得这种问题是那个包导致的我们不用管.

另外看了一下改动历史,java-openjfx还在依赖里,应该放到可选依赖吧.

Bot-wxt1221 commented on 2024-02-25 13:19 (UTC) (edited on 2024-02-25 13:21 (UTC) by Bot-wxt1221)

这正是我想要用的,我正在改,但是貌似出了一点问题。

另外,请问目前探测jfx的方式是否有任何问题。

@HinataAoi

HinataAoi commented on 2024-02-25 09:03 (UTC) (edited on 2024-02-25 09:06 (UTC) by HinataAoi)

我之前遇到问题那句指令怎么躺枪了😂,又变成用A包调用B包的lib目录了.

对于楼上yataro提到的问题,其实可以这样解决: 把java-openjfx改为可选依赖,然后在launch-script中用之前的方法筛一下有没有安装,有的话就用jfx启动.不过不建议采用楼上提到的hmcl-new的筛选jfx的方法,至少我用的这个jfx就有问题,会被筛没. 我按着这个思路试着写了一下:

JAVAFX_HOME=$(pacman -Ql java-openjfx | grep javafx | head -n 1 | cut -d / -f 5)


if [ -n "${JAVAFX_HOME}" ]; then
    exec /usr/lib/jvm/"${JAVAFX_HOME}"/bin/java --module-path "${JAVAFX_HOME}/lib/javafx.base.jar:${JAVAFX_HOME}/lib/javafx.fxml.jar:${JAVAFX_HOME}/lib/javafx.graphics.jar:${JAVAFX_HOME}/lib/javafx.media.jar:${JAVAFX_HOME}/lib/javafx.swing.jar:${JAVAFX_HOME}/lib/javafx.web.jar:${JAVAFX_HOME}/lib/javafx.controls.jar" --add-modules=javafx.base --add-modules=javafx.fxml --add-modules=javafx.graphics --add-modules=javafx.media --add-modules=javafx.swing --add-modules=javafx.web --add-modules=javafx.controls -jar /usr/share/java/hmcl-bin/hmcl-bin.jar "$@"
else
    exec java -jar /usr/share/java/hmcl-bin/hmcl-bin.jar "$@"
fi

这样的话再把PKGBUILD里面的java-openjfx改成可选依赖就行了,如果检索到本地已经安装的jfx就会优先调用.如果只有java-runtime的话就直接启动让hmcl自己解决jfx的问题.

@Bot-wxt1221