Minecraft的疑难杂症#8-使用UTF-8编码导致无法打开在含中文字符路径下的游戏
北葵Starry
编辑于 2024年03月03日 01:27
收录于文集
共28篇

好久没来更新了,主要是最近空闲时间不多+接触的一些崩溃比较常见(或者是直接无解哈哈哈哈哈)

今天来放一个比较特别的崩溃,是关于使用了Unicode UTF-8编码规则处理一些特殊字符(如汉字)的问题。至于怎么引起的,应该是一些跟GBK编码规则上的冲突,具体如何冲突... ...能把MC启动起来就好了吧w

以下是我在本地测试的崩溃日志(崩溃日志行数不会太多,一般是启动就崩溃):

����: �Ҳ������޷��������� net.minecraft.launchwrapper.Launch 或者是 ����: �Ҳ������޷��������� net.minecraft.client.main.Main 我的世界原版(香草版)  

WARNING: Unknown module: cpw.mods.securejarhandler specified to --add-exports WARNING: Unknown module: cpw.mods.securejarhandler specified to --add-opens ����: �Ҳ������޷��������� cpw.mods.bootstraplauncher.BootstrapLauncher ԭ��: java.lang.ClassNotFoundException: cpw.mods.bootstraplauncher.BootstrapLauncher Forge版  

   ����: �Ҳ������޷��������� net.fabricmc.loader.impl.launch.knot.KnotClient ԭ��: java.lang.ClassNotFoundException: net.fabricmc.loader.impl.launch.knot.KnotClient Fabric版  

WARNING: Unknown module: cpw.modsbootstraplauncher specified to -add-export. WARNING: Unknown module: cpw.mods.securejarhandler specified to --add-exports WARNING: Unknown module: specified to --add-opens WARNING: Unknown module: cpwmodssecureiarhandler specified to --add-opens Exception in thread "main&#​34; java.lang.ClassNotFoundException: moe.yushi.authlibinjector.Premain at java.base/idkinternal.loader.BuiltinClassloader.oadClass(BuitinClassloader iava:641) at java.base/idkinternalloader ClassloadersSAppClassloaderoadClassClassloaders iava:188) at java.base/iava.lang.ClassLoader.loadClass(ClassLoader.java:520) at java.instrument/sun.instrument.lnstrumentationlmpl.loadClassAndStartAgent(nstrumentationlmpl.java:435) at java.instrument/sun.instrument.lnstrumentationlmpl.loadClassAndCallPremain(lnstrumentationlmpl.java:503) FATAL ERROR in native method: processing of -javaagent failed, processJavaStart failed + aa ar.nstrument ASSERTON FALED esut with mesane acent oadreman a aled t evenkins tmp workspace budsrcsrc aanstume nt share natve ibinstrumentu/PluSAogentc line422 第三方登录(例如littleskin)

补充补充:发完文章的第二天收到个崩溃解决的请求,也收到个是通过下面的方法解决的,和上面提到的不太一样所以我也贴出来:

[15七月2022 12:02:12.434] [main/INFO] [cpw.mods.modlauncher.Launcher/MODLAUNCHER]: ModLauncher running: args [--username, ShiomiyaShiori, --version, [1.16.5]鍩冨強鎵撶墝涔嬫梾, --gameDir, G:\Minecraft\Pi\.minecraft, --assetsDir, G:\Minecraft\Pi\.minecraft\assets, --assetIndex, 1.16, --uuid, 84a3214c17714744af6b7640bf346f36, --accessToken, ????????, --userType, Mojang, --versionType, PCL2, --width, 854, --height, 480, --launchTarget, fmlclient, --fml.forgeVersion, 36.2.35, --fml.mcVersion, 1.16.5, --fml.forgeGroup, net.minecraftforge, --fml.mcpVersion, 20210115.111550] [15七月2022 12:02:12.438] [main/INFO] [cpw.mods.modlauncher.Launcher/MODLAUNCHER]: ModLauncher 8.1.3+8.1.3+main-8.1.x.c94d18ec starting: java version 1.8.0_60 by Oracle Corporation [15七月2022 12:02:12.465] [main/WARN] [cpw.mods.modlauncher.SecureJarHandler/]: LEGACY JDK DETECTED, SECURED JAR HANDLING DISABLED [15七月2022 12:02:12.611] [main/INFO] [optifine.OptiFineTransformationService/]: OptiFineTransformationService.onLoad [15七月2022 12:02:12.612] [main/INFO] [optifine.OptiFineTransformationService/]: OptiFine ZIP file: G:\Minecraft\Pi\.minecraft\mods\[高清修复]OptiFine_1.16.5_HD_U_G8.jar [15七月2022 12:02:12.614] [main/INFO] [optifine.OptiFineTransformer/]: Target.PRE_CLASS is available [15七月2022 12:02:12.717] [main/INFO] [net.minecraftforge.fml.loading.FixSSL/CORE]: Added Lets Encrypt root certificates as additional trust [15七月2022 12:02:12.772] [main/INFO] [mixin/]: SpongePowered MIXIN Subsystem Version=0.8.4 Source=file:/G:/Minecraft/Pi/.minecraft/libraries/org/spongepowered/mixin/0.8.4/mixin-0.8.4.jar Service=ModLauncher Env=CLIENT [15七月2022 12:02:12.784] [main/INFO] [optifine.OptiFineTransformationService/]: OptiFineTransformationService.initialize [15七月2022 12:02:12.887] [main/INFO] [STDERR/]: [org.lwjgl.system.Library:printError:424]: [LWJGL] Failed to load a library. Possible solutions: a) Add the directory that contains the shared library to -Djava.library.path or -Dorg.lwjgl.librarypath. b) Add the JAR that contains the shared library to the classpath. [15七月2022 12:02:12.889] [main/INFO] [STDERR/]: [org.lwjgl.system.Library:printError:426]: [LWJGL] Enable debug mode with -Dorg.lwjgl.util.Debug=true for Better diagnostics. [15七月2022 12:02:12.889] [main/INFO] [STDERR/]: [org.lwjgl.system.Library:printError:428]: [LWJGL] Enable the SharedLibraryLoader debug mode with -Dorg.lwjgl.util.DebugLoader=true for Better diagnostics. [15七月2022 12:02:12.890] [main/INFO] [STDERR/]: [java.lang.ThreadGroup:uncaughtException:-1]: java.lang.UnsatisfiedLinkError: Failed to locate library: lwjgl.dll [15七月2022 12:02:12.890] [main/INFO] [STDERR/]: [java.lang.ThreadGroup:uncaughtException:-1]: at org.lwjgl.system.Library.loadSystem(Library.java:147) [15七月2022 12:02:12.891] [main/INFO] [STDERR/]: [java.lang.ThreadGroup:uncaughtException:-1]: at org.lwjgl.system.Library.loadSystem(Library.java:67) [15七月2022 12:02:12.891] [main/INFO] [STDERR/]: [java.lang.ThreadGroup:uncaughtException:-1]: at org.lwjgl.system.Library.<clinit>(Library.java:50) [15七月2022 12:02:12.891] [main/INFO] [STDERR/]: [java.lang.ThreadGroup:uncaughtException:-1]: at org.lwjgl.system.MemoryUtil.<clinit>(MemoryUtil.java:97) [15七月2022 12:02:12.891] [main/INFO] [STDERR/]: [java.lang.ThreadGroup:uncaughtException:-1]: at org.lwjgl.system.Pointer$Default.<clinit>(Pointer.java:67) [15七月2022 12:02:12.892] [main/INFO] [STDERR/]: [java.lang.ThreadGroup:uncaughtException:-1]: at org.lwjgl.system.Callback.<clinit>(Callback.java:40) [15七月2022 12:02:12.892] [main/INFO] [STDERR/]: [java.lang.ThreadGroup:uncaughtException:-1]: at net.minecraftforge.fml.loading.progress.ClientVisualization.initWindow(ClientVisualization.java:55) [15七月2022 12:02:12.892] [main/INFO] [STDERR/]: [java.lang.ThreadGroup:uncaughtException:-1]: at net.minecraftforge.fml.loading.progress.ClientVisualization.start(ClientVisualization.java:335) [15七月2022 12:02:12.892] [main/INFO] [STDERR/]: [java.lang.ThreadGroup:uncaughtException:-1]: at net.minecraftforge.fml.loading.progress.EarlyProgressVisualization.accept(EarlyProgressVisualization.java:29) [15七月2022 12:02:12.892] [main/INFO] [STDERR/]: [java.lang.ThreadGroup:uncaughtException:-1]: at net.minecraftforge.fml.loading.FMLLoader.setupLaunchHandler(FMLLoader.java:176) [15七月2022 12:02:12.893] [main/INFO] [STDERR/]: [java.lang.ThreadGroup:uncaughtException:-1]: at net.minecraftforge.fml.loading.FMLServiceProvider.initialize(FMLServiceProvider.java:80) [15七月2022 12:02:12.893] [main/INFO] [STDERR/]: [java.lang.ThreadGroup:uncaughtException:-1]: at cpw.mods.modlauncher.TransformationServiceDecorator.onInitialize(TransformationServiceDecorator.java:68) [15七月2022 12:02:12.893] [main/INFO] [STDERR/]: [java.lang.ThreadGroup:uncaughtException:-1]: at cpw.mods.modlauncher.TransformationServicesHandler.lambda$initialiseTransformationServices$7(TransformationServicesHandler.java:107) [15七月2022 12:02:12.893] [main/INFO] [STDERR/]: [java.lang.ThreadGroup:uncaughtException:-1]: at java.util.HashMap$Values.forEach(Unknown Source) [15七月2022 12:02:12.893] [main/INFO] [STDERR/]: [java.lang.ThreadGroup:uncaughtException:-1]: at cpw.mods.modlauncher.TransformationServicesHandler.initialiseTransformationServices(TransformationServicesHandler.java:107) [15七月2022 12:02:12.894] [main/INFO] [STDERR/]: [java.lang.ThreadGroup:uncaughtException:-1]: at cpw.mods.modlauncher.TransformationServicesHandler.initializeTransformationServices(TransformationServicesHandler.java:59) [15七月2022 12:02:12.894] [main/INFO] [STDERR/]: [java.lang.ThreadGroup:uncaughtException:-1]: at cpw.mods.modlauncher.Launcher.run(Launcher.java:76) [15七月2022 12:02:12.894] [main/INFO] [STDERR/]: [java.lang.ThreadGroup:uncaughtException:-1]: at cpw.mods.modlauncher.Launcher.main(Launcher.java:66)

其实发现上面版本命名出现乱码(已加粗显示)一般情况其实也见得多,不过现在也要注意下有没有这种崩溃的可能性了(。然后,java.lang.UnsatisfiedLinkError: Failed to locate library: lwjgl.dll的出现也可能要检查下是否需要进行下面解决方案的操作。

其他版本应该崩溃得差不多,都是有这种“�”奇怪字符组成的。

解决方案:

  • 取消勾选 使用unicode utf 8 提供全球语言支持 选项。

不少玩家遇到这种崩溃都是因为勾选了 使用unicode utf 8 提供全球语言支持 选项,请参照以下图片去取消这个选项。

出自 :java.lang.ClassNotFoundException: net.fabric... - Mod问答 - Minecraft(我的世界)中文论坛 - Qingraw的回复 - (https://www.mcbbs.net/forum.php?mod=redirect&goto=findpost&ptid=1321234&pid=25204874)

还在Beta(测试)版不是么,所以不要去勾选它嘛(

  • 如果第一条方案无效,或者你不想取消勾选以上选项,你也可以将游戏文件放到不含特殊字符的路径(例如由英文或数字字符命名储存的文件夹)。

这里是我的补充: 发了文章之后,从启动器给我的在启动的Forge版本实时日志里看,看到了那些乱码的中文:“错误:找不到或无法加载主类(第一行)原因:(第二行)”

就这样,该怎么整就怎么整,这只是补充。

相关链接:

java.lang.ClassNotFoundException: net.fabricmc.loader.impl.launch.knot.KnotCl... - Mod问答 - Minecraft(我的世界)中文论坛 - (https://www.mcbbs.net/forum.php?mod=redirect&goto=findpost&ptid=1321234&pid=25204874)