Conversion = ')' at java.base/java.util.Formatter.parse(Unknown Source) at java....
错误信息
```
=== 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).LoadMainScreenPanel(MainScreen.lua:1686)
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.IngameState.enter(IngameState.java:775)
at zombie.gameStates.GameStateMachine.update(GameStateMachine.java:95)
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: 格式转换符为 ')'
🎯 原因分析
该错误发生在《丧尸末日》游戏的Lua脚本调用Java底层
String.format 时,传入的格式字符串中包含了不支持的格式转换符 ')'。具体位置在 Translator.reportMissingArgumentsFromPastAbuse 方法传递给 String.format 的格式化文本里,可能是 Lua 层未正确处理参数,导致 Java 层拼接时Format异常。💡 解决方案
若你对相关 Lua 脚本有修改权限,请检查
MainOptions.lua 第 2817 行附近的格式化字符串,确保仅使用 Java String.format 支持的转换符(如 %s、%d、%f 等),删除或修正 ) 相关的非法格式符:-- 示例:修正前(错误)
-- local text = string.format("Missing parameter)", value)
-- 修正后
local text = string.format("Missing parameter: %s", value)
若你仅作为玩家,请更新游戏/模组至官方最新版本,若问题持续可尝试禁用近期添加的第三方模组排查冲突。
🛡️ 预防措施
| 措施 | 说明 |
|---|---|
| 规范格式化字符串 | 编写格式化模板时,仅使用语言允许的合法格式符,避免将特殊符号(如 )、%)直接放入格式串 |
| 使用静态检查工具 | 利用IDE(如IntelliJ IDEA、VSCode)的格式化字符串检查插件,编写时实时提示非法格式符 |