猿问

Java 格式化程序问题

java.util.MissingFormatArgumentException: Format specifier 's'

    at java.util.Formatter.format(Formatter.java:2487) ~[na:1.7.0_80]

    at java.util.Formatter.format(Formatter.java:2423) ~[na:1.7.0_80]

    at java.lang.String.format(String.java:2enter code here792) ~[na:1.7.0_80]

    at com.aionemu.gameserver.utils.audit.GMService.onPlayerUnavailable(Unknown Source) ~[AL-Game.jar:na]

    at admincommands.GMMode.execute(GMMode.java]:73) ~[na:na]

当我在游戏中发送命令时,出现此错误。


该问题与我的配置文件有关,还是与 java 完全有关?


整个代码是:


package admincommands;


 import com.aionemu.gameserver.model.gameobjects.player.Player;

 import com.aionemu.gameserver.network.aion.serverpackets.SM_MOTION;

 import com.aionemu.gameserver.network.aion.serverpackets.SM_PLAYER_INFO;

 import com.aionemu.gameserver.utils.PacketSendUtility;

 import com.aionemu.gameserver.utils.audit.GMService;

 import com.aionemu.gameserver.utils.chathandlers.AdminCommand;


  */

 public class GMMode extends AdminCommand {


    public GMMode() {

        super("gm");

    }


    @Override

    public void execute(Player admin, String... params) {

        if (admin.getAccessLevel() < 1) {

            PacketSendUtility.sendMessage(admin, "You cannot use this command.");

            return;

        }


        if (params.length != 1) {

            onFail(admin, null);

            return;

        }


        if (params[0].toLowerCase().equals("on")) {

            if (!admin.isGmMode()) {

                admin.setGmMode(true);

                admin.setWispable();


蛊毒传说
浏览 208回答 1
1回答

犯罪嫌疑人X

异常告诉您,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()) {&nbsp; &nbsp; PacketSendUtility.sendBrightYellowMessageOnCenter(iter.next(), "Information : " + String.format(adminTag, player.getName()) + LanguageHandler.translate(CustomMessageId.ANNOUNCE_GM_DECONNECTION));}该变量adminTag是根据Player您正在传递的实例中的设置而构建的,所以说得更多,我们需要有关该实例状态的信息 - 通常查看源代码仅显示以下几行是可能的原因您遇到的异常:if (MembershipConfig.PREMIUM_TAG_DISPLAY) {&nbsp; &nbsp; switch (player.getClientConnection().getAccount().getMembership()) {&nbsp; &nbsp; &nbsp; &nbsp; case 1:&nbsp; &nbsp; &nbsp; &nbsp; adminTag = sb.insert(0, MembershipConfig.TAG_PREMIUM.substring(0, 2)).toString();&nbsp; &nbsp; &nbsp; &nbsp; break;&nbsp; &nbsp; case 2:&nbsp; &nbsp; &nbsp; &nbsp; adminTag = sb.insert(0, MembershipConfig.TAG_VIP.substring(0, 2)).toString();&nbsp; &nbsp; &nbsp; &nbsp; break;&nbsp; &nbsp; }}// * = Weddingif (player.isMarried()) {&nbsp; &nbsp; adminTag = sb.insert(0, WeddingsConfig.TAG_WEDDING.substring(0, 2)).toString();}查看保存例如值的相应类,TAG_WEDDING我猜您的配置包含这些常量中至少一个的自定义值,这些常量以 开头%s,因此adminTag最终为%s%s.所以回答你的问题该问题与我的配置文件有关,还是与 java 完全有关?我猜这是您的配置文件中的错误(一些以 开头的字符串%s)或您正在使用的库中的错误,但这绝对不是 Java 中的错误。
随时随地看视频慕课网APP

相关分类

Java
我要回答