Conversion = ')' at java.base/java.util.Formatter.parse(Unknown Source) at java....
错误信息
```
=== Zomboid Settings ===
Version: 42.20.2 ffe7a8a4b1 (Steam)
Mode: SINGLE PLAYER
[x1]
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.gameStates.MainScreenState.enter(MainScreenState.java:444)
at zombie.gameStates.GameStateMachine.update(GameStateMachine.java:90)
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 解决方案
🔍 报错分析
1. 🌐 错误翻译
原文:java.util.UnknownFormatConversionException: Conversion = ')'
译文:java.util.UnknownFormatConversionException:转换字符 = ')'
2. 🎯 原因分析
),触发了UnknownFormatConversionException异常。zombie.debug.DebugLogStream.printException方法的String.format调用中,属于游戏内的调试日志输出逻辑。)作为合法转换符。3. 💡 解决方案
问题出在游戏代码中调用
String.format时传入的格式字符串包含了非法的)转换符,需要定位到DebugLogStream.java:637附近,检查格式字符串并修正非法转换符。修复步骤:
zombie/debug/DebugLogStream.java文件,定位到第637行的String.format调用。)字符。假设原错误代码类似:
// 错误示例:格式字符串中误用了')'作为转换符
String.format("参数错误:%s)", errorMessage);
修复后的代码:
// 修复后:将非法转换符改为正确的占位符,并使用拼接补充括号
String.format("参数错误:%s)", errorMessage);
// 或直接移除格式字符串中的非法转换符,改为正常拼接
String result = String.format("参数错误:%s", errorMessage) + ")";
4. 🛡️ 预防措施
String.format前,严格检查格式字符串中的转换符是否为Java标准支持的字符(如%s、%d、%n等),避免将普通字符误当作转换符。