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 中的错误。
添加回答
举报