Conversion = ')' at java.base/java.util.Formatter.parse(Unknown Source) at java....

2026年09月27日 03:40 7.25 秒 success

错误信息

``` === Zomboid Settings === Version: 42.20.4 b0bbce05d5 (Steam) Mode: SINGLE PLAYER [x3] Lua(Vanilla).addModOptionsPanel(MainOptions.lua:2817) Lua(Vanilla).create(MainOptions.lua:410) Lua(Vanilla).instantiate(MainScreen.lua:694) Lua(Vanilla).addToUIManager(ISUIElement.lua:1367) Lua(Vanilla).LoadMainScreenPanelInt(MainScreen.lua:1791) Lua(Vanilla).LoadMainScreenPanelIngame(MainScreen.lua:1785) java.util.UnknownFormatConversionException: Conversion = ')' at java.base/java.util.Formatter.parse(Unknown Source) at java.base/java.util.Formatter.format(Unknown Source) at java.base/java.util.Formatter.format(Unknown Source) at java.base/java.lang.String.format(Unknown Source) at zombie.debug.DebugLogStream.printException(DebugLogStream.java:637) at zombie.debug.DebugType.printException(DebugType.java:300) at zombie.core.Translator.reportMissingArgumentsFromPastAbuse(Translator.java:515) at zombie.core.Translator.getText(Translator.java:502) at zombie.Lua.LuaManager$GlobalObject.getText(LuaManager.java:7279) at java.base/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(Unknown Source) at java.base/java.lang.reflect.Method.invoke(Unknown Source) at se.krka.kahlua.integration.expose.caller.MethodCaller.call(MethodCaller.java:58) at se.krka.kahlua.integration.expose.LuaJavaInvoker.call(LuaJavaInvoker.java:194) at se.krka.kahlua.integration.expose.LuaJavaInvoker.call(LuaJavaInvoker.java:184) at se.krka.kahlua.vm.KahluaThread.callJava(KahluaThread.java:178) at se.krka.kahlua.vm.KahluaThread.luaMainloop(KahluaThread.java:795) at se.krka.kahlua.vm.KahluaThread.call(KahluaThread.java:162) at se.krka.kahlua.vm.KahluaThread.pcall(KahluaThread.java:1740) at se.krka.kahlua.vm.KahluaThread.pcallvoid(KahluaThread.java:1572) at se.krka.kahlua.integration.LuaCaller.pcallvoid(LuaCaller.java:60) at se.krka.kahlua.integration.LuaCaller.protectedCallVoid(LuaCaller.java:131) at zombie.Lua.Event.trigger(Event.java:55) at zombie.Lua.LuaEventManager.triggerEvent(LuaEventManager.java:248) at zombie.core.Core.ResetLua(Core.java:4208) at zombie.gameStates.ConnectToServerState.receiveServerOptions(ConnectToServerState.java:135) at zombie.gameStates.ConnectToServerState.Finish(ConnectToServerState.java:696) at zombie.gameStates.ConnectToServerState.update(ConnectToServerState.java:104) at zombie.gameStates.MainScreenState.update(MainScreenState.java:778) at zombie.gameStates.GameStateMachine.update(GameStateMachine.java:65) at zombie.GameWindow.logic(GameWindow.java:390) at zombie.GameWindow.frameStep(GameWindow.java:790) at zombie.GameWindow.mainThreadStep(GameWindow.java:567) at zombie.MainThread.mainLoop(MainThread.java:69) at java.base/java.lang.Thread.run(Unknown Source) ```

AI 解决方案

🌐 错误翻译

原文:java.util.UnknownFormatConversionException: Conversion = ')'
译文:java.util.UnknownFormatConversionException: 转换符为 ')'

🎯 原因分析

此错误发生在 Java String.format() 方法调用时,使用了非法的格式化转换符 ) 。getText() 方法在处理翻译文本时,可能使用了不正确的格式化字符串,导致 Formatter 抛出 UnknownFormatConversionException。

💡 解决方案

需要检查 zombie.core.Translator.getText() 和 reportMissingArgumentsFromPastAbuse() 方法中的格式化字符串,确保只使用合法的格式化转换符(如 %s, %d 等)。

// 示例:修改前(问题代码)
String.format("参数错误: %)"); // 非法的转换符

// 修改后
String.format("参数错误: %s", paramValue); // 使用合法的转换符

🛡️ 预防措施

  • ✅ 格式化字符串检查:使用静态代码分析工具(如 SpotBugs)检查 String.format() 调用,确保转换符合法

  • ✅ 单元测试:为翻译和文本处理逻辑编写单元测试,覆盖各种输入情况