HMCL-dev / HMCL

A Minecraft Launcher which is multi-functional, cross-platform and popular
https://hmcl.huangyuhui.net
GNU General Public License v3.0
6.9k stars 675 forks source link

[Bug] 外置登录无法刷新账号 #2968

Closed pan90 closed 6 months ago

pan90 commented 6 months ago

平台 | Platform

Windows 10 10.0.19045.3693

问题描述 | Problem Description

我正在基于Next.js实现yggdrail外置登录,但是在刷新账号时出现了一些问题,下图是显示内容 image

经测试,像littleskin皮肤站能正常刷新,而自己实现的却不行。

相关错误日志

[10:33:44] [org.jackhuang.hmcl.Launcher.main/INFO] *** HMCL 3.5.7 ***
[10:33:44] [org.jackhuang.hmcl.Launcher.main/INFO] Operating System: Windows 10 10.0.19045.3693
[10:33:44] [org.jackhuang.hmcl.Launcher.main/INFO] System Architecture: amd64
[10:33:44] [org.jackhuang.hmcl.Launcher.main/INFO] Java Architecture: amd64
[10:33:44] [org.jackhuang.hmcl.Launcher.main/INFO] Java Version: 17.0.6, Alibaba
[10:33:44] [org.jackhuang.hmcl.Launcher.main/INFO] Java VM Version: OpenJDK 64-Bit Server VM (mixed mode, sharing), Alibaba
[10:33:45] [org.jackhuang.hmcl.setting.Accounts.lambda$init$10/WARNING] Failed to fetch authlib-injector server metdata: https://paper-card.cn/api/yggdrasil/ (纸片登录)
java.io.IOException: Malformed response
/api/yggdrasil
    at org.jackhuang.hmcl.auth.authlibinjector.AuthlibInjectorServer.refreshMetadata(AuthlibInjectorServer.java:169)
    at org.jackhuang.hmcl.auth.authlibinjector.AuthlibInjectorServer.refreshMetadata(AuthlibInjectorServer.java:161)
    at org.jackhuang.hmcl.auth.authlibinjector.AuthlibInjectorServer.fetchMetadataResponse(AuthlibInjectorServer.java:155)
    at org.jackhuang.hmcl.setting.Accounts.lambda$init$10(Accounts.java:336)
    at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1136)
    at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:635)
    at java.base/java.lang.Thread.run(Thread.java:833)
Caused by: com.google.gson.JsonSyntaxException: com.google.gson.stream.MalformedJsonException: Expected value at line 1 column 1 path $
    at com.google.gson.Gson.fromJson(Gson.java:1241)
    at com.google.gson.Gson.fromJson(Gson.java:1137)
    at com.google.gson.Gson.fromJson(Gson.java:1047)
    at com.google.gson.Gson.fromJson(Gson.java:982)
    at org.jackhuang.hmcl.auth.authlibinjector.AuthlibInjectorServer.setMetadataResponse(AuthlibInjectorServer.java:178)
    at org.jackhuang.hmcl.auth.authlibinjector.AuthlibInjectorServer.refreshMetadata(AuthlibInjectorServer.java:167)
    ... 6 more
Caused by: com.google.gson.stream.MalformedJsonException: Expected value at line 1 column 1 path $
    at com.google.gson.stream.JsonReader.syntaxError(JsonReader.java:1659)
    at com.google.gson.stream.JsonReader.doPeek(JsonReader.java:599)
    at com.google.gson.stream.JsonReader.peek(JsonReader.java:433)
    at com.google.gson.Gson.fromJson(Gson.java:1224)
    ... 11 more

这貌似是JSON解析错误,我根据异常信息查看了HMCL的相关代码 文件:https://github.com/HMCL-dev/HMCL/blob/main/HMCLCore/src/main/java/org/jackhuang/hmcl/auth/authlibinjector/AuthlibInjectorServer.java image image

似乎HMCL请求到了错误的yggdrail元信息,传入setMetadataResponse的解析文本居然是:“/api/yggdrasil” 并且,我从yggdrail服务器后台日志看出,hmcl并没有请求/api/yggdrasil 我使用API测试工具进行测试,返回的meta如下: image

因为使用blessing skin的皮肤站不会这样,我不清楚是我自己的问题还是hmcl的问题 另外:使用PCL2启动器可正常刷新,并不会出现“账户刷新失败”的问题

启动器崩溃报告 / 启动器日志文件 | Launcher Crash Report / Launcher Log File

[10:33:44] [org.jackhuang.hmcl.util.SelfDependencyPatcher.patch/INFO] Missing JavaFX dependencies, attempting to patch in missing classes
[10:33:44] [org.jackhuang.hmcl.util.SelfDependencyPatcher.loadFromCache/INFO]  - Loading dependencies...
[10:33:44] [org.jackhuang.hmcl.util.SelfDependencyPatcher.patch/INFO]  - Done!
[10:33:44] [org.jackhuang.hmcl.Launcher.main/INFO] *** HMCL 3.5.7 ***
[10:33:44] [org.jackhuang.hmcl.Launcher.main/INFO] Operating System: Windows 10 10.0.19045.3693
[10:33:44] [org.jackhuang.hmcl.Launcher.main/INFO] System Architecture: amd64
[10:33:44] [org.jackhuang.hmcl.Launcher.main/INFO] Java Architecture: amd64
[10:33:44] [org.jackhuang.hmcl.Launcher.main/INFO] Java Version: 17.0.6, Alibaba
[10:33:44] [org.jackhuang.hmcl.Launcher.main/INFO] Java VM Version: OpenJDK 64-Bit Server VM (mixed mode, sharing), Alibaba
[10:33:44] [org.jackhuang.hmcl.Launcher.main/INFO] Java Home: D:\PCS懒人包\dragonwell-17.0.6.0.6+9-GA
[10:33:44] [org.jackhuang.hmcl.Launcher.main/INFO] Current Directory: D:\PCS懒人包
[10:33:44] [org.jackhuang.hmcl.Launcher.main/INFO] HMCL Directory: C:\Users\Administrator\AppData\Roaming\.hmcl
[10:33:44] [org.jackhuang.hmcl.Launcher.main/INFO] HMCL Jar Path: D:\PCS懒人包\HMCL-3.5.7.jar
[10:33:44] [org.jackhuang.hmcl.Launcher.main/INFO] Memory: 4042MB
[10:33:44] [org.jackhuang.hmcl.Launcher.main/INFO] Physical memory: 16167 MB
[10:33:44] [org.jackhuang.hmcl.Launcher.main/INFO] Metaspace: 5MB
[10:33:45] [org.jackhuang.hmcl.Launcher.start/INFO] JavaFX Version: 19.0.2.1+1
[10:33:45] [org.jackhuang.hmcl.Launcher.start/INFO] Prism pipeline: com.sun.prism.d3d.D3DPipeline
[10:33:45] [org.jackhuang.hmcl.setting.ConfigHolder.init/INFO] Config location: D:\PCS懒人包\hmcl.json
[10:33:45] [org.jackhuang.hmcl.auth.authlibinjector.AuthlibInjectorDownloader.checkUpdate/INFO] Checking update of authlib-injector
[10:33:45] [org.jackhuang.hmcl.task.AsyncTaskExecutor.lambda$executeNormalTask$19/FINE] Executing task: org.jackhuang.hmcl.game.GameRepository.refreshVersionsAsync(GameRepository.java:90)
[10:33:45] [org.jackhuang.hmcl.task.AsyncTaskExecutor.lambda$executeNormalTask$19/FINE] Executing task: org.jackhuang.hmcl.game.GameRepository.refreshVersionsAsync(GameRepository.java:90)
[10:33:45] [org.jackhuang.hmcl.event.EventBus.fireEvent/INFO] RefreshingVersionsEvent [source=HMCLGameRepository [versions=null, baseDirectory=.minecraft]] gets fired
[10:33:45] [org.jackhuang.hmcl.event.EventBus.fireEvent/INFO] RefreshingVersionsEvent [source=HMCLGameRepository [versions=null, baseDirectory=.minecraft]] gets fired
[10:33:45] [org.jackhuang.hmcl.ui.Controllers.initialize/INFO] Start initializing application
[10:33:45] [org.jackhuang.hmcl.event.EventBus.fireEvent/INFO] LoadedOneVersionEvent [source=HMCLGameRepository [versions=null, baseDirectory=.minecraft], version=Version [id=1.20.2]] gets fired
[10:33:45] [org.jackhuang.hmcl.event.EventBus.fireEvent/INFO] LoadedOneVersionEvent [source=HMCLGameRepository [versions=null, baseDirectory=.minecraft], version=Version [id=1.20.2]] gets fired
[10:33:45] [org.jackhuang.hmcl.event.EventBus.fireEvent/INFO] LoadedOneVersionEvent [source=HMCLGameRepository [versions=null, baseDirectory=.minecraft], version=Version [id=1.12.2-Forge_14.23.5.2859-OptiFine_G5]] gets fired
[10:33:45] [org.jackhuang.hmcl.event.EventBus.fireEvent/INFO] LoadedOneVersionEvent [source=HMCLGameRepository [versions=null, baseDirectory=.minecraft], version=Version [id=1.12.2-Forge_14.23.5.2859-OptiFine_G5]] gets fired
[10:33:45] [org.jackhuang.hmcl.event.EventBus.fireEvent/INFO] LoadedOneVersionEvent [source=HMCLGameRepository [versions=null, baseDirectory=.minecraft], version=Version [id=1.20.4-Fabric 0.15.6]] gets fired
[10:33:45] [org.jackhuang.hmcl.event.EventBus.fireEvent/INFO] LoadedOneVersionEvent [source=HMCLGameRepository [versions=null, baseDirectory=.minecraft], version=Version [id=1.20.4-Fabric 0.15.6]] gets fired
[10:33:45] [org.jackhuang.hmcl.event.EventBus.fireEvent/INFO] LoadedOneVersionEvent [source=HMCLGameRepository [versions=null, baseDirectory=.minecraft], version=Version [id=PaperCard Client]] gets fired
[10:33:45] [org.jackhuang.hmcl.event.EventBus.fireEvent/INFO] LoadedOneVersionEvent [source=HMCLGameRepository [versions=null, baseDirectory=.minecraft], version=Version [id=PaperCard Client]] gets fired
[10:33:45] [org.jackhuang.hmcl.event.EventBus.fireEvent/INFO] LoadedOneVersionEvent [source=HMCLGameRepository [versions=null, baseDirectory=.minecraft], version=Version [id=1.20.4]] gets fired
[10:33:45] [org.jackhuang.hmcl.event.EventBus.fireEvent/INFO] LoadedOneVersionEvent [source=HMCLGameRepository [versions=null, baseDirectory=.minecraft], version=Version [id=1.20.4]] gets fired
[10:33:45] [org.jackhuang.hmcl.event.EventBus.fireEvent/INFO] LoadedOneVersionEvent [source=HMCLGameRepository [versions=null, baseDirectory=.minecraft], version=Version [id=PaperCard-1.20.1]] gets fired
[10:33:45] [org.jackhuang.hmcl.event.EventBus.fireEvent/INFO] LoadedOneVersionEvent [source=HMCLGameRepository [versions=null, baseDirectory=.minecraft], version=Version [id=PaperCard-1.20.1]] gets fired
[10:33:45] [org.jackhuang.hmcl.event.EventBus.fireEvent/INFO] RefreshedVersionsEvent [source=HMCLGameRepository [versions=[1.12.2-Forge_14.23.5.2859-OptiFine_G5, 1.20.2, 1.20.4, 1.20.4-Fabric 0.15.6, PaperCard Client, PaperCard-1.20.1], baseDirectory=.minecraft]] gets fired
[10:33:45] [org.jackhuang.hmcl.task.AsyncTaskExecutor.lambda$executeNormalTask$29/FINER] Task finished: org.jackhuang.hmcl.game.GameRepository.refreshVersionsAsync(GameRepository.java:90)
[10:33:45] [org.jackhuang.hmcl.event.EventBus.fireEvent/INFO] RefreshedVersionsEvent [source=HMCLGameRepository [versions=[1.12.2-Forge_14.23.5.2859-OptiFine_G5, 1.20.2, 1.20.4, 1.20.4-Fabric 0.15.6, PaperCard Client, PaperCard-1.20.1], baseDirectory=.minecraft]] gets fired
[10:33:45] [org.jackhuang.hmcl.task.AsyncTaskExecutor.lambda$executeNormalTask$29/FINER] Task finished: org.jackhuang.hmcl.game.GameRepository.refreshVersionsAsync(GameRepository.java:90)
[10:33:45] [org.jackhuang.hmcl.setting.Accounts.lambda$init$10/WARNING] Failed to fetch authlib-injector server metdata: https://paper-card.cn/api/yggdrasil/ (纸片登录)
java.io.IOException: Malformed response
/api/yggdrasil
    at org.jackhuang.hmcl.auth.authlibinjector.AuthlibInjectorServer.refreshMetadata(AuthlibInjectorServer.java:169)
    at org.jackhuang.hmcl.auth.authlibinjector.AuthlibInjectorServer.refreshMetadata(AuthlibInjectorServer.java:161)
    at org.jackhuang.hmcl.auth.authlibinjector.AuthlibInjectorServer.fetchMetadataResponse(AuthlibInjectorServer.java:155)
    at org.jackhuang.hmcl.setting.Accounts.lambda$init$10(Accounts.java:336)
    at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1136)
    at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:635)
    at java.base/java.lang.Thread.run(Thread.java:833)
Caused by: com.google.gson.JsonSyntaxException: com.google.gson.stream.MalformedJsonException: Expected value at line 1 column 1 path $
    at com.google.gson.Gson.fromJson(Gson.java:1241)
    at com.google.gson.Gson.fromJson(Gson.java:1137)
    at com.google.gson.Gson.fromJson(Gson.java:1047)
    at com.google.gson.Gson.fromJson(Gson.java:982)
    at org.jackhuang.hmcl.auth.authlibinjector.AuthlibInjectorServer.setMetadataResponse(AuthlibInjectorServer.java:178)
    at org.jackhuang.hmcl.auth.authlibinjector.AuthlibInjectorServer.refreshMetadata(AuthlibInjectorServer.java:167)
    ... 6 more
Caused by: com.google.gson.stream.MalformedJsonException: Expected value at line 1 column 1 path $
    at com.google.gson.stream.JsonReader.syntaxError(JsonReader.java:1659)
    at com.google.gson.stream.JsonReader.doPeek(JsonReader.java:599)
    at com.google.gson.stream.JsonReader.peek(JsonReader.java:433)
    at com.google.gson.Gson.fromJson(Gson.java:1224)
    ... 11 more
[10:33:45] [org.jackhuang.hmcl.task.AsyncTaskExecutor.lambda$executeNormalTask$19/FINE] Executing task: org.jackhuang.hmcl.ui.Controllers.initialize(Controllers.java:254)
[10:33:45] [org.jackhuang.hmcl.auth.authlibinjector.AuthlibInjectorServer.refreshMetadata/INFO] authlib-injector server metadata refreshed: https://littleskin.cn/api/yggdrasil/
[10:33:45] [org.jackhuang.hmcl.auth.authlibinjector.AuthlibInjectorServer.refreshMetadata/INFO] authlib-injector server metadata refreshed: https://skin.paper-card.cn/api/yggdrasil/
[10:33:46] [org.jackhuang.hmcl.setting.ConfigHolder.writeToConfig/INFO] Saving config
[10:33:46] [org.jackhuang.hmcl.setting.ConfigHolder.writeToConfig/INFO] Saving config
[10:33:46] [org.jackhuang.hmcl.upgrade.IntegrityChecker.isSelfVerified/INFO] Successfully verified current JAR
[10:33:46] [org.jackhuang.hmcl.util.Pack200Utils.<clinit>/WARNING] Pack200 not found
[10:33:46] [org.jackhuang.hmcl.upgrade.UpdateChecker.lambda$requestCheckUpdate$2/INFO] Latest version (STABLE) is [3.5.7 from http://mirrors.cloud.tencent.com/nexus/repository/maven-public/org/glavo/hmcl/hmcl-stable/3.5.7/hmcl-stable-3.5.7.jar]
[10:33:47] [org.jackhuang.hmcl.util.platform.JavaVersion.lambda$lookupJavas$2/FINER] Looking for Java:C:\Program Files\Java\jdk-1.8\bin\java.exe
[10:33:47] [org.jackhuang.hmcl.util.platform.JavaVersion.lambda$lookupJavas$2/FINER] Looking for Java:C:\Program Files\Java\jre-1.8\bin\java.exe
[10:33:47] [org.jackhuang.hmcl.util.platform.JavaVersion.lambda$lookupJavas$2/FINER] Looking for Java:C:\Program Files\Common Files\Oracle\Java\javapath_target_55571718\java.exe
[10:33:47] [org.jackhuang.hmcl.util.platform.JavaVersion.lambda$lookupJavas$2/FINER] Looking for Java:C:\Program Files (x86)\Common Files\Oracle\Java\javapath_target_2680829968\java.exe
[10:33:47] [org.jackhuang.hmcl.util.platform.JavaVersion.lambda$lookupJavas$2/FINER] Looking for Java:C:\Program Files\Java\jdk-17\bin\java.exe
[10:33:47] [org.jackhuang.hmcl.util.platform.JavaVersion.lambda$lookupJavas$2/FINE] Found Java (17.0.9) C:\Program Files\Java\jdk-17\bin\java.exe
[10:33:47] [org.jackhuang.hmcl.util.platform.JavaVersion.lambda$lookupJavas$2/FINE] Found Java (1.8.0_401) C:\Program Files\Java\jre-1.8\bin\java.exe
[10:33:47] [org.jackhuang.hmcl.util.platform.JavaVersion.lambda$lookupJavas$2/FINE] Found Java (17.0.9) C:\Program Files\Common Files\Oracle\Java\javapath_target_55571718\java.exe
[10:33:47] [org.jackhuang.hmcl.util.platform.JavaVersion.lambda$lookupJavas$2/FINE] Found Java (1.8.0_391) C:\Program Files\Java\jdk-1.8\bin\java.exe
[10:33:47] [org.jackhuang.hmcl.util.platform.JavaVersion.lambda$lookupJavas$2/FINE] Found Java (1.8.0_401) C:\Program Files (x86)\Common Files\Oracle\Java\javapath_target_2680829968\java.exe
[10:33:47] [org.jackhuang.hmcl.util.platform.JavaVersion.initialize/FINE] Finished Java installation lookup, found 6
[10:33:47] [org.jackhuang.hmcl.task.AsyncTaskExecutor.lambda$executeNormalTask$29/FINER] Task finished: org.jackhuang.hmcl.ui.Controllers.initialize(Controllers.java:254)
[10:33:48] [org.jackhuang.hmcl.ui.construct.Navigator.navigate/INFO] Navigate to AccountListPage@5d17efc7[styleClass=gray-background]
[10:33:48] [org.jackhuang.hmcl.auth.microsoft.MicrosoftService.lambda$new$0/INFO] Fetching properties of 20554467-84cb-4773-a084-e3cfa867d480
[10:33:48] [org.jackhuang.hmcl.auth.yggdrasil.YggdrasilService.lambda$new$0/INFO] Fetching properties of 0298846c-1a18-483d-b5df-1c3eb71becfd from https://littleskin.cn/api/yggdrasil/
[10:33:48] [org.jackhuang.hmcl.auth.yggdrasil.YggdrasilService.lambda$new$0/INFO] Fetching properties of 9451fa98-01de-44f6-ac7f-b165d46a389e from https://skin.paper-card.cn/api/yggdrasil/
[10:33:48] [org.jackhuang.hmcl.auth.yggdrasil.YggdrasilService.lambda$new$0/INFO] Fetching properties of 20554467-84cb-4773-a084-e3cfa867d480 from https://skin.paper-card.cn/api/yggdrasil/
[10:33:48] [org.jackhuang.hmcl.auth.microsoft.MicrosoftService.lambda$new$0/INFO] Fetching properties of 822ffe99-2e89-4f0e-9be0-44477ec8420f
[10:33:48] [org.jackhuang.hmcl.setting.Accounts.lambda$loadGlobalAccountStorages$4/INFO] Saving global accounts
[10:33:48] [org.jackhuang.hmcl.setting.Accounts.lambda$loadGlobalAccountStorages$4/INFO] Saving global accounts
[10:33:48] [org.jackhuang.hmcl.setting.Accounts.lambda$loadGlobalAccountStorages$4/INFO] Saving global accounts
[10:33:49] [org.jackhuang.hmcl.ui.construct.Navigator.close/INFO] Closed page AccountListPage@5d17efc7[styleClass=gray-background]
[10:33:50] [org.jackhuang.hmcl.ui.construct.Navigator.navigate/INFO] Navigate to AccountListPage@5d17efc7[styleClass=gray-background]
[10:33:54] [org.jackhuang.hmcl.ui.construct.StackContainerPane.push/INFO] StackContainerPane@14df180 [CreateAccountPane@4ac3ba3d[styleClass=jfx-dialog-layout]]
[10:34:04] [org.jackhuang.hmcl.task.AsyncTaskExecutor.lambda$executeNormalTask$19/FINE] Executing task: org.jackhuang.hmcl.ui.account.CreateAccountPane.lambda$onAccept$6(CreateAccountPane.java:231)
[10:34:04] [org.jackhuang.hmcl.task.AsyncTaskExecutor.lambda$executeNormalTask$19/FINE] Executing task: org.jackhuang.hmcl.ui.account.CreateAccountPane.lambda$onAccept$6(CreateAccountPane.java:230)
[10:34:04] [org.jackhuang.hmcl.task.AsyncTaskExecutor.lambda$executeNormalTask$29/FINER] Task finished: org.jackhuang.hmcl.ui.account.CreateAccountPane.lambda$onAccept$6(CreateAccountPane.java:230)
[10:34:04] [org.jackhuang.hmcl.setting.Accounts.lambda$loadGlobalAccountStorages$4/INFO] Saving global accounts
[10:34:04] [org.jackhuang.hmcl.setting.ConfigHolder.writeToConfig/INFO] Saving config
[10:34:04] [org.jackhuang.hmcl.auth.yggdrasil.YggdrasilService.lambda$new$0/INFO] Fetching properties of 20554467-84cb-4773-a084-e3cfa867d480 from https://paper-card.cn/api/yggdrasil/
[10:34:04] [org.jackhuang.hmcl.ui.construct.StackContainerPane.pop/INFO] StackContainerPane@14df180 [], removed: true, object: CreateAccountPane@4ac3ba3d[styleClass=jfx-dialog-layout]
[10:34:04] [org.jackhuang.hmcl.task.AsyncTaskExecutor.lambda$executeNormalTask$29/FINER] Task finished: org.jackhuang.hmcl.ui.account.CreateAccountPane.lambda$onAccept$6(CreateAccountPane.java:231)
[10:34:04] [org.jackhuang.hmcl.setting.Accounts.lambda$loadGlobalAccountStorages$4/INFO] Saving global accounts
[10:34:10] [org.jackhuang.hmcl.Launcher.stopApplication/INFO] Stopping application.
    at java.base/java.lang.Thread.getStackTrace(Thread.java:1610)
    at org.jackhuang.hmcl.Launcher.stopApplication(Launcher.java:299)
    at org.jackhuang.hmcl.ui.decorator.Decorator.close(Decorator.java:246)
    at org.jackhuang.hmcl.ui.decorator.DecoratorSkin.lambda$new$6(DecoratorSkin.java:214)
    at javafx.base@19.0.2.1/com.sun.javafx.event.CompositeEventHandler.dispatchBubblingEvent(CompositeEventHandler.java:86)
    at javafx.base@19.0.2.1/com.sun.javafx.event.EventHandlerManager.dispatchBubblingEvent(EventHandlerManager.java:234)
    at javafx.base@19.0.2.1/com.sun.javafx.event.EventHandlerManager.dispatchBubblingEvent(EventHandlerManager.java:191)
    at javafx.base@19.0.2.1/com.sun.javafx.event.CompositeEventDispatcher.dispatchBubblingEvent(CompositeEventDispatcher.java:59)
    at javafx.base@19.0.2.1/com.sun.javafx.event.BasicEventDispatcher.dispatchEvent(BasicEventDispatcher.java:58)
    at javafx.base@19.0.2.1/com.sun.javafx.event.EventDispatchChainImpl.dispatchEvent(EventDispatchChainImpl.java:114)
    at javafx.base@19.0.2.1/com.sun.javafx.event.BasicEventDispatcher.dispatchEvent(BasicEventDispatcher.java:56)
    at javafx.base@19.0.2.1/com.sun.javafx.event.EventDispatchChainImpl.dispatchEvent(EventDispatchChainImpl.java:114)
    at javafx.base@19.0.2.1/com.sun.javafx.event.BasicEventDispatcher.dispatchEvent(BasicEventDispatcher.java:56)
    at javafx.base@19.0.2.1/com.sun.javafx.event.EventDispatchChainImpl.dispatchEvent(EventDispatchChainImpl.java:114)
    at javafx.base@19.0.2.1/com.sun.javafx.event.BasicEventDispatcher.dispatchEvent(BasicEventDispatcher.java:56)
    at javafx.base@19.0.2.1/com.sun.javafx.event.EventDispatchChainImpl.dispatchEvent(EventDispatchChainImpl.java:114)
    at javafx.base@19.0.2.1/com.sun.javafx.event.BasicEventDispatcher.dispatchEvent(BasicEventDispatcher.java:56)
    at javafx.base@19.0.2.1/com.sun.javafx.event.EventDispatchChainImpl.dispatchEvent(EventDispatchChainImpl.java:114)
    at javafx.base@19.0.2.1/com.sun.javafx.event.EventUtil.fireEventImpl(EventUtil.java:74)
    at javafx.base@19.0.2.1/com.sun.javafx.event.EventUtil.fireEvent(EventUtil.java:49)
    at javafx.base@19.0.2.1/javafx.event.Event.fireEvent(Event.java:198)
    at javafx.graphics@19.0.2.1/javafx.scene.Node.fireEvent(Node.java:8923)
    at javafx.controls@19.0.2.1/javafx.scene.control.Button.fire(Button.java:203)
    at javafx.controls@19.0.2.1/com.sun.javafx.scene.control.behavior.ButtonBehavior.mouseReleased(ButtonBehavior.java:207)
    at javafx.controls@19.0.2.1/com.sun.javafx.scene.control.inputmap.InputMap.handle(InputMap.java:274)
    at javafx.base@19.0.2.1/com.sun.javafx.event.CompositeEventHandler$NormalEventHandlerRecord.handleBubblingEvent(CompositeEventHandler.java:247)
    at javafx.base@19.0.2.1/com.sun.javafx.event.CompositeEventHandler.dispatchBubblingEvent(CompositeEventHandler.java:80)
    at javafx.base@19.0.2.1/com.sun.javafx.event.EventHandlerManager.dispatchBubblingEvent(EventHandlerManager.java:234)
    at javafx.base@19.0.2.1/com.sun.javafx.event.EventHandlerManager.dispatchBubblingEvent(EventHandlerManager.java:191)
    at javafx.base@19.0.2.1/com.sun.javafx.event.CompositeEventDispatcher.dispatchBubblingEvent(CompositeEventDispatcher.java:59)
    at javafx.base@19.0.2.1/com.sun.javafx.event.BasicEventDispatcher.dispatchEvent(BasicEventDispatcher.java:58)
    at javafx.base@19.0.2.1/com.sun.javafx.event.EventDispatchChainImpl.dispatchEvent(EventDispatchChainImpl.java:114)
    at javafx.base@19.0.2.1/com.sun.javafx.event.BasicEventDispatcher.dispatchEvent(BasicEventDispatcher.java:56)
    at javafx.base@19.0.2.1/com.sun.javafx.event.EventDispatchChainImpl.dispatchEvent(EventDispatchChainImpl.java:114)
    at javafx.base@19.0.2.1/com.sun.javafx.event.BasicEventDispatcher.dispatchEvent(BasicEventDispatcher.java:56)
    at javafx.base@19.0.2.1/com.sun.javafx.event.EventDispatchChainImpl.dispatchEvent(EventDispatchChainImpl.java:114)
    at javafx.base@19.0.2.1/com.sun.javafx.event.BasicEventDispatcher.dispatchEvent(BasicEventDispatcher.java:56)
    at javafx.base@19.0.2.1/com.sun.javafx.event.EventDispatchChainImpl.dispatchEvent(EventDispatchChainImpl.java:114)
    at javafx.base@19.0.2.1/com.sun.javafx.event.BasicEventDispatcher.dispatchEvent(BasicEventDispatcher.java:56)
    at javafx.base@19.0.2.1/com.sun.javafx.event.EventDispatchChainImpl.dispatchEvent(EventDispatchChainImpl.java:114)
    at javafx.base@19.0.2.1/com.sun.javafx.event.EventUtil.fireEventImpl(EventUtil.java:74)
    at javafx.base@19.0.2.1/com.sun.javafx.event.EventUtil.fireEvent(EventUtil.java:54)
    at javafx.base@19.0.2.1/javafx.event.Event.fireEvent(Event.java:198)
    at javafx.graphics@19.0.2.1/javafx.scene.Scene$MouseHandler.process(Scene.java:3894)
    at javafx.graphics@19.0.2.1/javafx.scene.Scene.processMouseEvent(Scene.java:1887)
    at javafx.graphics@19.0.2.1/javafx.scene.Scene$ScenePeerListener.mouseEvent(Scene.java:2620)
    at javafx.graphics@19.0.2.1/com.sun.javafx.tk.quantum.GlassViewEventHandler$MouseEventNotification.run(GlassViewEventHandler.java:411)
    at javafx.graphics@19.0.2.1/com.sun.javafx.tk.quantum.GlassViewEventHandler$MouseEventNotification.run(GlassViewEventHandler.java:301)
    at java.base/java.security.AccessController.doPrivileged(AccessController.java:399)
    at javafx.graphics@19.0.2.1/com.sun.javafx.tk.quantum.GlassViewEventHandler.lambda$handleMouseEvent$2(GlassViewEventHandler.java:450)
    at javafx.graphics@19.0.2.1/com.sun.javafx.tk.quantum.QuantumToolkit.runWithoutRenderLock(QuantumToolkit.java:424)
    at javafx.graphics@19.0.2.1/com.sun.javafx.tk.quantum.GlassViewEventHandler.handleMouseEvent(GlassViewEventHandler.java:449)
    at javafx.graphics@19.0.2.1/com.sun.glass.ui.View.handleMouseEvent(View.java:551)
    at javafx.graphics@19.0.2.1/com.sun.glass.ui.View.notifyMouse(View.java:937)
    at javafx.graphics@19.0.2.1/com.sun.glass.ui.win.WinApplication._runLoop(Native Method)
    at javafx.graphics@19.0.2.1/com.sun.glass.ui.win.WinApplication.lambda$runLoop$3(WinApplication.java:184)
    at java.base/java.lang.Thread.run(Thread.java:833)

[10:34:10] [org.jackhuang.hmcl.task.Schedulers.shutdown/INFO] Shutting down executor services.
burningtnt commented 6 months ago

是你自己代码的问题。请保证皮肤站第一次初始化时给出的账号刷新接口 URL 与你希望的一致 如有问题,请自行脱敏后上传 hmcl.json 供进一步分析

pan90 commented 6 months ago

我大概是明白了,hmcl似乎没支持HTTP重定向 image image

一个斜线的区别

burningtnt commented 6 months ago

看不出两个请求的 URL 有任何差别

pan90 commented 6 months ago

/api/yggdrasil 和 /api/yggdrasil/ 显然不一样

请求 /api/yggdrasil/ 服务端发了重定向响应,让重定向到 /api/yggdrasil 而HMCL并没有处理这个重定向,直接进行json解析

而且在hmcl保存yggdrail地址的时候,末尾都加了反斜线/

burningtnt commented 6 months ago

那这就是你的问题了。理论上来说,末尾有无 / 完全取决于底层的实现。你这种行为是非常危险的

Glavo commented 6 months ago

HMCL 会在遇到 /api/yggdrasil 后将它补全为 /api/yggdrasil/,根据 Yggdrasil 服务端规范,此 API 也应该以 / 结尾。

HMCL 在这里确实可以做的稳健,但这里也建议你的服务端应当从 /api/yggdrasil 重定向至 /api/yggdrasil/ 或者同时响应两者。