From cceef4f8f8ab0217853d35733fb2a3c82abca28a Mon Sep 17 00:00:00 2001 From: Glavo Date: Fri, 20 Feb 2026 22:16:53 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BC=98=E5=8C=96=E6=97=A0=E6=B3=95=E8=A1=A5?= =?UTF-8?q?=E5=85=A8=20JavaFX=20=E6=97=B6=E7=9A=84=E6=8A=A5=E9=94=99?= =?UTF-8?q?=E4=BF=A1=E6=81=AF=20(#5586)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../java/org/jackhuang/hmcl/EntryPoint.java | 3 --- .../hmcl/util/SelfDependencyPatcher.java | 26 ++++++++----------- .../resources/assets/lang/I18N.properties | 3 --- .../resources/assets/lang/I18N_ar.properties | 3 --- .../resources/assets/lang/I18N_es.properties | 3 --- .../resources/assets/lang/I18N_ja.properties | 1 - .../resources/assets/lang/I18N_lzh.properties | 1 - .../resources/assets/lang/I18N_ru.properties | 3 --- .../resources/assets/lang/I18N_uk.properties | 3 --- .../resources/assets/lang/I18N_zh.properties | 1 - .../assets/lang/I18N_zh_CN.properties | 1 - 11 files changed, 11 insertions(+), 37 deletions(-) diff --git a/HMCL/src/main/java/org/jackhuang/hmcl/EntryPoint.java b/HMCL/src/main/java/org/jackhuang/hmcl/EntryPoint.java index 83623c86d..0b0cf61af 100644 --- a/HMCL/src/main/java/org/jackhuang/hmcl/EntryPoint.java +++ b/HMCL/src/main/java/org/jackhuang/hmcl/EntryPoint.java @@ -200,9 +200,6 @@ public final class EntryPoint { } catch (SelfDependencyPatcher.PatchException e) { LOG.error("Unable to patch JVM", e); showErrorAndExit(i18n("fatal.javafx.missing")); - } catch (SelfDependencyPatcher.IncompatibleVersionException e) { - LOG.error("Unable to patch JVM", e); - showErrorAndExit(i18n("fatal.javafx.incompatible")); } catch (CancellationException e) { LOG.error("User cancels downloading JavaFX", e); exit(0); diff --git a/HMCL/src/main/java/org/jackhuang/hmcl/util/SelfDependencyPatcher.java b/HMCL/src/main/java/org/jackhuang/hmcl/util/SelfDependencyPatcher.java index ae206f97c..6844732b2 100644 --- a/HMCL/src/main/java/org/jackhuang/hmcl/util/SelfDependencyPatcher.java +++ b/HMCL/src/main/java/org/jackhuang/hmcl/util/SelfDependencyPatcher.java @@ -79,10 +79,11 @@ public final class SelfDependencyPatcher { private final byte[] buffer = new byte[IOUtils.DEFAULT_BUFFER_SIZE]; private final MessageDigest digest = DigestUtils.getDigest("SHA-1"); - private SelfDependencyPatcher() throws IncompatibleVersionException { + private SelfDependencyPatcher() throws PatchException { // We can only self-patch JavaFX on specific platform. if (dependencies == null) { - throw new IncompatibleVersionException(); + throw new PatchException("Unsupported platform: operating system %s, architecture %s".formatted( + System.getProperty("os.name"), System.getProperty("os.arch"))); } final String customUrl = System.getProperty("hmcl.openjfx.repo"); @@ -159,18 +160,12 @@ public final class SelfDependencyPatcher { /** * Patch in any missing dependencies, if any. */ - public static void patch() throws PatchException, IncompatibleVersionException, CancellationException { + public static void patch() throws PatchException, CancellationException { // Do nothing if JavaFX is detected try { - try { - Class.forName("javafx.application.Application"); - return; - } catch (Exception ignored) { - } - } catch (UnsupportedClassVersionError error) { - // Loading the JavaFX class was unsupported. - // We are probably on 8 and its on 11 - throw new IncompatibleVersionException(); + Class.forName("javafx.application.Application"); + return; + } catch (Exception ignored) { } SelfDependencyPatcher patcher = new SelfDependencyPatcher(); @@ -378,14 +373,15 @@ public final class SelfDependencyPatcher { } public static class PatchException extends Exception { + PatchException(String message) { + super(message); + } + PatchException(String message, Throwable cause) { super(message, cause); } } - public static class IncompatibleVersionException extends Exception { - } - public static class ProgressFrame extends JDialog { private final JProgressBar progressBar; diff --git a/HMCL/src/main/resources/assets/lang/I18N.properties b/HMCL/src/main/resources/assets/lang/I18N.properties index e72d56836..6d8f4f989 100644 --- a/HMCL/src/main/resources/assets/lang/I18N.properties +++ b/HMCL/src/main/resources/assets/lang/I18N.properties @@ -401,9 +401,6 @@ extension.schematic=Schematic File extension.world=World Archive fatal.create_hmcl_current_directory_failure=Hello Minecraft! Launcher cannot create the HMCL directory (%s). Please move HMCL to another location and reopen it. -fatal.javafx.incompatible=Missing JavaFX environment.\n\ - Hello Minecraft! Launcher cannot automatically install JavaFX on Java <11.\n\ - Please update your Java to version 11 or later. fatal.javafx.incomplete=The JavaFX environment is incomplete.\n\ Please try replacing your Java or reinstalling OpenJFX. fatal.javafx.missing=Missing JavaFX environment. Please open Hello Minecraft! Launcher with Java, which includes OpenJFX. diff --git a/HMCL/src/main/resources/assets/lang/I18N_ar.properties b/HMCL/src/main/resources/assets/lang/I18N_ar.properties index ee44dc3c2..e845094ac 100644 --- a/HMCL/src/main/resources/assets/lang/I18N_ar.properties +++ b/HMCL/src/main/resources/assets/lang/I18N_ar.properties @@ -370,9 +370,6 @@ extension.mod=ملف التعديل extension.world=أرشيف العالم fatal.create_hmcl_current_directory_failure=Hello Minecraft! Launcher لا يمكنه إنشاء دليل HMCL (%s). يرجى نقل HMCL إلى موقع آخر وإعادة فتحه. -fatal.javafx.incompatible=بيئة JavaFX مفقودة.\n\ - Hello Minecraft! Launcher لا يمكنه تثبيت JavaFX تلقائياً على Java <11.\n\ - يرجى تحديث Java الخاص بك إلى الإصدار 11 أو أحدث. fatal.javafx.incomplete=بيئة JavaFX غير مكتملة.\n\ يرجى محاولة استبدال Java الخاص بك أو إعادة تثبيت OpenJFX. fatal.javafx.missing=بيئة JavaFX مفقودة. يرجى فتح Hello Minecraft! Launcher باستخدام Java، والذي يتضمن OpenJFX. diff --git a/HMCL/src/main/resources/assets/lang/I18N_es.properties b/HMCL/src/main/resources/assets/lang/I18N_es.properties index 538440797..878cb0307 100644 --- a/HMCL/src/main/resources/assets/lang/I18N_es.properties +++ b/HMCL/src/main/resources/assets/lang/I18N_es.properties @@ -372,9 +372,6 @@ extension.mod=Archivo mod extension.world=Archivo del mundo fatal.create_hmcl_current_directory_failure=El lanzador no puede crear el directorio HMCL (%s). Por favor, mueva el lanzador a otra ubicación y vuelva a abrirlo. -fatal.javafx.incompatible=No se encontró un entorno JavaFX.\n\ - Hello Minecraft! Launcher no puede instalar automáticamente JavaFX con versiones de Java inferiores a la 11.\n\ - Por favor, actualice su Java a la versión 11 o posterior. fatal.javafx.incomplete=El entorno JavaFX está incompleto.\n\ Por favor, intente reemplazar su Java o reinstalar OpenJFX. fatal.javafx.missing=No se encontró un entorno JavaFX.\n\ diff --git a/HMCL/src/main/resources/assets/lang/I18N_ja.properties b/HMCL/src/main/resources/assets/lang/I18N_ja.properties index 13c85085e..56c88069e 100644 --- a/HMCL/src/main/resources/assets/lang/I18N_ja.properties +++ b/HMCL/src/main/resources/assets/lang/I18N_ja.properties @@ -322,7 +322,6 @@ extension.datapack=Datapack extension.mod=Modファイル extension.world=World zip -fatal.javafx.incompatible=アプリケーションは11未満の現在のJava環境でJavaFXにパッチを適用できません。\nこのアプリは、JDK11以降またはJavaFXがバンドルされたJDKを使用して実行してください。 fatal.javafx.missing=JavaFXがありません。\nJava11以降を使用している場合は、Oracle JRE 8にダウングレードするか、BellSoft Liberica FullJREをインストールしてください。\n他のOpenJDKビルドを使用している場合は、OpenJFXが含まれていることを確認してください。 fatal.config_loading_failure=構成にアクセスできません。\nHelloMinecraftを確認してください。Launcherには、「%s」とその中のファイルへの読み取りおよび書き込みアクセス権があります。 fatal.migration_requires_manual_reboot=更新が完了しました。Hello Minecraftを再開してください!ランチャー。 diff --git a/HMCL/src/main/resources/assets/lang/I18N_lzh.properties b/HMCL/src/main/resources/assets/lang/I18N_lzh.properties index 6471f9110..bbde123e1 100644 --- a/HMCL/src/main/resources/assets/lang/I18N_lzh.properties +++ b/HMCL/src/main/resources/assets/lang/I18N_lzh.properties @@ -368,7 +368,6 @@ extension.mod=改囊案 extension.world=生界緊囊 fatal.create_hmcl_current_directory_failure=HMCL 不能立其案夾 (%s),宜稍遷而再啟之。\n君可求助於 https://docs.hmcl.net/help.html。 -fatal.javafx.incompatible=JavaFX 闕。\n既行於爪哇之次乎爪哇十一者,HMCL 不能自補之也。宜晉爪哇於十一抑後之者。\n君可求助於 https://docs.hmcl.net/help.html。 fatal.javafx.incomplete=JavaFX 損。宜更爪哇,抑復置 OpenJFX。 fatal.javafx.missing=JavaFX 闕。君須行 HMCL 於爪哇之俻 OpenJFX 者。\n君可求助於 https://docs.hmcl.net/help.html。 fatal.config_change_owner_root=君方啟 HMCL 以根戶簿,是則他戶簿或不能啟之。\n君可求助於 https://docs.hmcl.net/help.html。\n猶啟諸? diff --git a/HMCL/src/main/resources/assets/lang/I18N_ru.properties b/HMCL/src/main/resources/assets/lang/I18N_ru.properties index 7fb7469fe..37b554e29 100644 --- a/HMCL/src/main/resources/assets/lang/I18N_ru.properties +++ b/HMCL/src/main/resources/assets/lang/I18N_ru.properties @@ -372,9 +372,6 @@ extension.mod=Файл мода extension.world=Архив мира fatal.create_hmcl_current_directory_failure=Лаунчер не может создать папку HMCL (%s). Пожалуйста, переместите лаунчер в другое место и откройте его снова. -fatal.javafx.incompatible=Отсутствует среда JavaFX.\n\ - Лаунчер не может автоматически установить JavaFX на Java <11.\n\ - Обновите Java до версии 11 или более поздней. fatal.javafx.incomplete=Среда JavaFX является неполной.\n\ Попробуйте заменить Java или переустановить OpenJFX. fatal.javafx.missing=Отсутствует среда JavaFX.\n\ diff --git a/HMCL/src/main/resources/assets/lang/I18N_uk.properties b/HMCL/src/main/resources/assets/lang/I18N_uk.properties index f141c425b..bf8a7675d 100644 --- a/HMCL/src/main/resources/assets/lang/I18N_uk.properties +++ b/HMCL/src/main/resources/assets/lang/I18N_uk.properties @@ -370,9 +370,6 @@ extension.mod=Файл мода extension.world=Архів світу fatal.create_hmcl_current_directory_failure=Hello Minecraft! Лаунчер не може створити каталог HMCL (%s). Перемістіть HMCL в інше місце та відкрийте його знову. -fatal.javafx.incompatible=Відсутнє середовище JavaFX. \n\ - Hello Minecraft! Лаунчер не може автоматично встановити JavaFX на Java <11. \n\ - Оновіть вашу Java до версії 11 або новішої. fatal.javafx.incomplete=Середовище JavaFX неповне. \n\ Спробуйте замінити вашу Java або перевстановити OpenJFX. fatal.javafx.missing=Відсутнє середовище JavaFX. Відкрийте Hello Minecraft! Лаунчер за допомогою Java, яка включає OpenJFX. diff --git a/HMCL/src/main/resources/assets/lang/I18N_zh.properties b/HMCL/src/main/resources/assets/lang/I18N_zh.properties index b233fe6a4..9738a2cd9 100644 --- a/HMCL/src/main/resources/assets/lang/I18N_zh.properties +++ b/HMCL/src/main/resources/assets/lang/I18N_zh.properties @@ -393,7 +393,6 @@ extension.schematic=原理圖檔案 extension.world=世界壓縮檔 fatal.create_hmcl_current_directory_failure=Hello Minecraft! Launcher 無法建立 HMCL 資料夾 (%s),請將 HMCL 移動至其他位置再開啟。 -fatal.javafx.incompatible=缺少 JavaFX 執行環境。\nHMCL 無法在低於 Java 11 的 Java 環境上自行補全 JavaFX 執行環境。請更新到 Java 11 或更高版本。 fatal.javafx.incomplete=JavaFX 執行環境不完整。請嘗試更換你的 Java 或者重新安裝 OpenJFX。 fatal.javafx.missing=缺少 JavaFX 執行環境。請使用包含 OpenJFX 的 Java 執行環境開啟 Hello Minecraft! Launcher。 fatal.config_change_owner_root=你正在使用 root 帳戶開啟 Hello Minecraft! Launcher,這可能導致你未來無法使用其他帳戶正常開啟 HMCL。\n是否繼續開啟? diff --git a/HMCL/src/main/resources/assets/lang/I18N_zh_CN.properties b/HMCL/src/main/resources/assets/lang/I18N_zh_CN.properties index 172d10a0d..d05ab4264 100644 --- a/HMCL/src/main/resources/assets/lang/I18N_zh_CN.properties +++ b/HMCL/src/main/resources/assets/lang/I18N_zh_CN.properties @@ -396,7 +396,6 @@ extension.schematic=原理图文件 extension.world=世界压缩包 fatal.create_hmcl_current_directory_failure=Hello Minecraft! Launcher 无法创建 HMCL 文件夹 (%s),请将 HMCL 移动至其他位置再启动。\n如遇到问题,你可以访问 https://docs.hmcl.net/help.html 页面寻求帮助。 -fatal.javafx.incompatible=缺少 JavaFX 运行环境。\nHello Minecraft! Launcher 无法在低于 Java 11 的 Java 环境上自行补全 JavaFX 运行环境。请更新到 Java 11 或更高版本。\n你可以访问 https://docs.hmcl.net/help.html 页面寻求帮助。 fatal.javafx.incomplete=JavaFX 运行环境不完整。请尝试更换你的 Java 或者重新安装 OpenJFX。 fatal.javafx.missing=缺少 JavaFX 运行环境。请使用包含 OpenJFX 的 Java 运行环境启动 Hello Minecraft! Launcher。\n你可以访问 https://docs.hmcl.net/help.html 页面寻求帮助。 fatal.config_change_owner_root=你正在使用 root 账户启动 Hello Minecraft! Launcher,这可能导致你未来无法正常使用其他账户正常启动 HMCL。\n你可以访问 https://docs.hmcl.net/help.html 页面寻求帮助。\n是否继续启动?