Skip to content

[Bug] 345 (#6091) 以来的新资源包管理处理非 UTF-8 options.txt 时崩溃 #6348

Description

@zhuWin

问题描述 | Bug Description

版本 3.15.0.345 以来的资源包管理功能 (#6091 )似乎无法正确处理使用非 UTF-8 的 options.txt 的文本编码。

已确认版本 344 之前没有任何问题。

Image

遇到具有相应情况的实例时 HMCL 将发生崩溃。这在 Windows 等使用非 UTF-8 的平台可能会产生不便。

  1. 进入具有相应特征 options.txt 的实例的实例管理
  2. 进入资源包管理,可能预载过程就已经导致崩溃
  3. 呈现空白的资源包列表,无论是否存在有效的资源包文件

btw 环节

另外,现在 HMCL 不会对启动器本身的崩溃再弹出任何相关提示,呈现给用户的 仅仅是 空白的资源包页面 ,这是否为预期行为?

Image

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

日志文件,345和348.zip

[15:29:34] [@.task.AsyncTaskExecutor.lambda$executeNormalTask$31/TRACE] Task failed: org.jackhuang.hmcl.ui.versions.ResourcePackListPage.refresh(ResourcePackListPage.java:122)
java.io.UncheckedIOException: java.nio.charset.MalformedInputException: Input length = 1
        at java.base/java.nio.file.FileChannelLinesSpliterator.readLine(FileChannelLinesSpliterator.java:189)
        at java.base/java.nio.file.FileChannelLinesSpliterator.forEachRemaining(FileChannelLinesSpliterator.java:129)
        at java.base/java.util.stream.ReferencePipeline$Head.forEach(ReferencePipeline.java:803)
        at org.jackhuang.hmcl.addon.resourcepack.ResourcePackManager.loadOptions(ResourcePackManager.java:233)
        at org.jackhuang.hmcl.addon.resourcepack.ResourcePackManager.arePacksEnabled(ResourcePackManager.java:495)
        at org.jackhuang.hmcl.ui.versions.ResourcePackListPage.lambda$refresh$0(ResourcePackListPage.java:127)
        at org.jackhuang.hmcl.task.Task$SimpleTask.execute(Task.java:1110)
        at org.jackhuang.hmcl.task.AsyncTaskExecutor.lambda$executeNormalTask$22(AsyncTaskExecutor.java:241)
        at org.jackhuang.hmcl.util.Lang.lambda$wrap$2(Lang.java:303)
        at java.base/java.util.concurrent.CompletableFuture$AsyncRun.run(CompletableFuture.java:1825)
        at java.base/java.util.concurrent.ThreadPerTaskExecutor$TaskRunner.run(ThreadPerTaskExecutor.java:291)
        at java.base/java.lang.VirtualThread.run(VirtualThread.java:456)
Caused by: java.nio.charset.MalformedInputException: Input length = 1
        at java.base/java.nio.charset.CoderResult.throwException(CoderResult.java:279)
        at java.base/sun.nio.cs.StreamDecoder.implRead(StreamDecoder.java:334)
        at java.base/sun.nio.cs.StreamDecoder.read(StreamDecoder.java:186)
        at java.base/java.io.BufferedReader.fill(BufferedReader.java:166)
        at java.base/java.io.BufferedReader.readLine(BufferedReader.java:333)
        at java.base/java.io.BufferedReader.readLine(BufferedReader.java:400)
        at java.base/java.nio.file.FileChannelLinesSpliterator.readLine(FileChannelLinesSpliterator.java:187)
        ... 11 more
[15:29:34] [@.ui.versions.ResourcePackListPage.lambda$refresh$1/WARNING] Failed to load resource packs
java.io.UncheckedIOException: java.nio.charset.MalformedInputException: Input length = 1
        at java.base/java.nio.file.FileChannelLinesSpliterator.readLine(FileChannelLinesSpliterator.java:189)
        at java.base/java.nio.file.FileChannelLinesSpliterator.forEachRemaining(FileChannelLinesSpliterator.java:129)
        at java.base/java.util.stream.ReferencePipeline$Head.forEach(ReferencePipeline.java:803)
        at org.jackhuang.hmcl.addon.resourcepack.ResourcePackManager.loadOptions(ResourcePackManager.java:233)
        at org.jackhuang.hmcl.addon.resourcepack.ResourcePackManager.arePacksEnabled(ResourcePackManager.java:495)
        at org.jackhuang.hmcl.ui.versions.ResourcePackListPage.lambda$refresh$0(ResourcePackListPage.java:127)
        at org.jackhuang.hmcl.task.Task$SimpleTask.execute(Task.java:1110)
        at org.jackhuang.hmcl.task.AsyncTaskExecutor.lambda$executeNormalTask$22(AsyncTaskExecutor.java:241)
        at org.jackhuang.hmcl.util.Lang.lambda$wrap$2(Lang.java:303)
        at java.base/java.util.concurrent.CompletableFuture$AsyncRun.run(CompletableFuture.java:1825)
        at java.base/java.util.concurrent.ThreadPerTaskExecutor$TaskRunner.run(ThreadPerTaskExecutor.java:291)
        at java.base/java.lang.VirtualThread.run(VirtualThread.java:456)
Caused by: java.nio.charset.MalformedInputException: Input length = 1
        at java.base/java.nio.charset.CoderResult.throwException(CoderResult.java:279)
        at java.base/sun.nio.cs.StreamDecoder.implRead(StreamDecoder.java:334)
        at java.base/sun.nio.cs.StreamDecoder.read(StreamDecoder.java:186)
        at java.base/java.io.BufferedReader.fill(BufferedReader.java:166)
        at java.base/java.io.BufferedReader.readLine(BufferedReader.java:333)
        at java.base/java.io.BufferedReader.readLine(BufferedReader.java:400)
        at java.base/java.nio.file.FileChannelLinesSpliterator.readLine(FileChannelLinesSpliterator.java:187)
        ... 11 more
[15:29:34] [@.task.AsyncTaskExecutor.lambda$start$1/WARNING] An exception occurred in task execution
java.io.UncheckedIOException: java.nio.charset.MalformedInputException: Input length = 1
        at java.base/java.nio.file.FileChannelLinesSpliterator.readLine(FileChannelLinesSpliterator.java:189)
        at java.base/java.nio.file.FileChannelLinesSpliterator.forEachRemaining(FileChannelLinesSpliterator.java:129)
        at java.base/java.util.stream.ReferencePipeline$Head.forEach(ReferencePipeline.java:803)
        at org.jackhuang.hmcl.addon.resourcepack.ResourcePackManager.loadOptions(ResourcePackManager.java:233)
        at org.jackhuang.hmcl.addon.resourcepack.ResourcePackManager.arePacksEnabled(ResourcePackManager.java:495)
        at org.jackhuang.hmcl.ui.versions.ResourcePackListPage.lambda$refresh$0(ResourcePackListPage.java:127)
        at org.jackhuang.hmcl.task.Task$SimpleTask.execute(Task.java:1110)
        at org.jackhuang.hmcl.task.AsyncTaskExecutor.lambda$executeNormalTask$22(AsyncTaskExecutor.java:241)
        at org.jackhuang.hmcl.util.Lang.lambda$wrap$2(Lang.java:303)
        at java.base/java.util.concurrent.CompletableFuture$AsyncRun.run(CompletableFuture.java:1825)
        at java.base/java.util.concurrent.ThreadPerTaskExecutor$TaskRunner.run(ThreadPerTaskExecutor.java:291)
        at java.base/java.lang.VirtualThread.run(VirtualThread.java:456)
Caused by: java.nio.charset.MalformedInputException: Input length = 1
        at java.base/java.nio.charset.CoderResult.throwException(CoderResult.java:279)
        at java.base/sun.nio.cs.StreamDecoder.implRead(StreamDecoder.java:334)
        at java.base/sun.nio.cs.StreamDecoder.read(StreamDecoder.java:186)
        at java.base/java.io.BufferedReader.fill(BufferedReader.java:166)
        at java.base/java.io.BufferedReader.readLine(BufferedReader.java:333)
        at java.base/java.io.BufferedReader.readLine(BufferedReader.java:400)
        at java.base/java.nio.file.FileChannelLinesSpliterator.readLine(FileChannelLinesSpliterator.java:187)
        ... 11 more
[15:29:34] [@.util.CrashReporter.uncaughtException/ERROR] Uncaught exception in thread ForkJoinPool.commonPool-worker-4
java.io.UncheckedIOException: java.nio.charset.MalformedInputException: Input length = 1
        at java.base/java.nio.file.FileChannelLinesSpliterator.readLine(FileChannelLinesSpliterator.java:189)
        at java.base/java.nio.file.FileChannelLinesSpliterator.forEachRemaining(FileChannelLinesSpliterator.java:129)
        at java.base/java.util.stream.ReferencePipeline$Head.forEach(ReferencePipeline.java:803)
        at org.jackhuang.hmcl.addon.resourcepack.ResourcePackManager.loadOptions(ResourcePackManager.java:233)
        at org.jackhuang.hmcl.addon.resourcepack.ResourcePackManager.arePacksEnabled(ResourcePackManager.java:495)
        at org.jackhuang.hmcl.ui.versions.ResourcePackListPage.lambda$refresh$0(ResourcePackListPage.java:127)
        at org.jackhuang.hmcl.task.Task$SimpleTask.execute(Task.java:1110)
        at org.jackhuang.hmcl.task.AsyncTaskExecutor.lambda$executeNormalTask$22(AsyncTaskExecutor.java:241)
        at org.jackhuang.hmcl.util.Lang.lambda$wrap$2(Lang.java:303)
        at java.base/java.util.concurrent.CompletableFuture$AsyncRun.run(CompletableFuture.java:1825)
        at java.base/java.util.concurrent.ThreadPerTaskExecutor$TaskRunner.run(ThreadPerTaskExecutor.java:291)
        at java.base/java.lang.VirtualThread.run(VirtualThread.java:456)
Caused by: java.nio.charset.MalformedInputException: Input length = 1
        at java.base/java.nio.charset.CoderResult.throwException(CoderResult.java:279)
        at java.base/sun.nio.cs.StreamDecoder.implRead(StreamDecoder.java:334)
        at java.base/sun.nio.cs.StreamDecoder.read(StreamDecoder.java:186)
        at java.base/java.io.BufferedReader.fill(BufferedReader.java:166)
        at java.base/java.io.BufferedReader.readLine(BufferedReader.java:333)
        at java.base/java.io.BufferedReader.readLine(BufferedReader.java:400)
        at java.base/java.nio.file.FileChannelLinesSpliterator.readLine(FileChannelLinesSpliterator.java:187)
        ... 11 more
[15:29:34] [@.util.CrashReporter.uncaughtException/ERROR] ---- Hello Minecraft! Crash Report ----
  Version: 3.16.0.348
  Time: 2026-07-09 15:29:34
  Thread: Thread[#76,ForkJoinPool.commonPool-worker-4,5,InnocuousForkJoinWorkerThreadGroup]

  Content:
    java.io.UncheckedIOException: java.nio.charset.MalformedInputException: Input length = 1
        at java.base/java.nio.file.FileChannelLinesSpliterator.readLine(FileChannelLinesSpliterator.java:189)
        at java.base/java.nio.file.FileChannelLinesSpliterator.forEachRemaining(FileChannelLinesSpliterator.java:129)
        at java.base/java.util.stream.ReferencePipeline$Head.forEach(ReferencePipeline.java:803)
        at org.jackhuang.hmcl.addon.resourcepack.ResourcePackManager.loadOptions(ResourcePackManager.java:233)
        at org.jackhuang.hmcl.addon.resourcepack.ResourcePackManager.arePacksEnabled(ResourcePackManager.java:495)
        at org.jackhuang.hmcl.ui.versions.ResourcePackListPage.lambda$refresh$0(ResourcePackListPage.java:127)
        at org.jackhuang.hmcl.task.Task$SimpleTask.execute(Task.java:1110)
        at org.jackhuang.hmcl.task.AsyncTaskExecutor.lambda$executeNormalTask$22(AsyncTaskExecutor.java:241)
        at org.jackhuang.hmcl.util.Lang.lambda$wrap$2(Lang.java:303)
        at java.base/java.util.concurrent.CompletableFuture$AsyncRun.run(CompletableFuture.java:1825)
        at java.base/java.util.concurrent.ThreadPerTaskExecutor$TaskRunner.run(ThreadPerTaskExecutor.java:291)
        at java.base/java.lang.VirtualThread.run(VirtualThread.java:456)
Caused by: java.nio.charset.MalformedInputException: Input length = 1
        at java.base/java.nio.charset.CoderResult.throwException(CoderResult.java:279)
        at java.base/sun.nio.cs.StreamDecoder.implRead(StreamDecoder.java:334)
        at java.base/sun.nio.cs.StreamDecoder.read(StreamDecoder.java:186)
        at java.base/java.io.BufferedReader.fill(BufferedReader.java:166)
        at java.base/java.io.BufferedReader.readLine(BufferedReader.java:333)
        at java.base/java.io.BufferedReader.readLine(BufferedReader.java:400)
        at java.base/java.nio.file.FileChannelLinesSpliterator.readLine(FileChannelLinesSpliterator.java:187)
        ... 11 more


-- System Details --
  Operating System: Windows 11 25H2 10.0.26200.7462
  System Architecture: x86-64
  Java Architecture: x86-64
  Java Version: 25.0.1, Azul Systems, Inc.
  Java VM Version: OpenJDK 64-Bit Server VM (mixed mode, sharing), Azul Systems, Inc.
  JVM Max Memory: 12733906944
  JVM Total Memory: 100663296
  JVM Free Memory: 34891088

Metadata

Metadata

Assignees

No one assigned

    Labels

    Type

    No type

    Fields

    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions