1 回答

TA貢獻2080條經驗 獲得超4個贊
異常告訴您,String.format發生了格式說明符多于格式值的情況。所以某處有一個電話像
ret = String.format("name %s, surname %s", "Firstname");
根據堆棧跟蹤,這發生在您的問題中缺少的com.aionemu.gameserver.utils.audit.GMService方法中的 某個地方onPlayerUnavailable。
一個簡短的谷歌搜索帶來了一個 Git 項目,在那里你可以看到罪魁禍首的來源,在那里你可以看到一個調用String.format:
Iterator<Player> iter = World.getInstance().getPlayersIterator();
while (iter.hasNext()) {
PacketSendUtility.sendBrightYellowMessageOnCenter(iter.next(), "Information : " + String.format(adminTag, player.getName()) + LanguageHandler.translate(CustomMessageId.ANNOUNCE_GM_DECONNECTION));
}
該變量adminTag是根據Player您正在傳遞的實例中的設置而構建的,所以說得更多,我們需要有關該實例狀態的信息 - 通常查看源代碼僅顯示以下幾行是可能的原因您遇到的異常:
if (MembershipConfig.PREMIUM_TAG_DISPLAY) {
switch (player.getClientConnection().getAccount().getMembership()) {
case 1:
adminTag = sb.insert(0, MembershipConfig.TAG_PREMIUM.substring(0, 2)).toString();
break;
case 2:
adminTag = sb.insert(0, MembershipConfig.TAG_VIP.substring(0, 2)).toString();
break;
}
}
// * = Wedding
if (player.isMarried()) {
adminTag = sb.insert(0, WeddingsConfig.TAG_WEDDING.substring(0, 2)).toString();
}
查看保存例如值的相應類,TAG_WEDDING我猜您的配置包含這些常量中至少一個的自定義值,這些常量以 開頭%s,因此adminTag最終為%s%s.
所以回答你的問題
該問題與我的配置文件有關,還是與 java 完全有關?
我猜這是您的配置文件中的錯誤(一些以 開頭的字符串%s)或您正在使用的庫中的錯誤,但這絕對不是 Java 中的錯誤。
添加回答
舉報