问题描述
在Arch Linux系统中已经安装了以下默认版本的软件包:
- java-openjfx
- jdk-openjdk
- jre-openjdk
- jre-openjdk-headless
运行HMCL的时候会提示找不到JavaFX:
1 | [org.jackhuang.hmcl.util.SelfDependencyPatcher.patch/INFO] Missing JavaFX dependencies, attempting to patch in missing classes |
HMCL是一个很好用的minecraft启动器,它能够自动到网络上下载所需的依赖,但是系统本身已经安装了所需依赖,为什么不用呢?
据了解,JavaFX不再是OpenJDK的一部分了,因此用默认的OpenJDK运行jar会出现找不到JavaFX模块的问题。
解决的方法是手动添加JavaFX模块。由于某种未知的原因,Arch Linux中,java-openjfx包会将JavaFX库安装到OpenJDK的lib目录中,导致以下添加方式出现错误
1 | $ java --module-path /usr/lib/jvm/java-20-openjdk/lib --add-modules javafx.base,javafx.controls,javafx.fxml,javafx.graphics,javafx.media,javafx.swing,javafx.web -jar HMCL-3.5.5.jar |
这是因为,在顶级目录中不包含module-info.class的jar文件被视为自动模块自动加载,jrt.fs包含编译为JDK 8的“jrt”文件系统提供程序的副本,最终结果是出现两个包含jdk.internal.jrtfs包(以及许多其他包)的冲突模块。解决冲突的方法是更加详细地描述添加模块的路径信息。
解决方法
1 |
|