2016-03-20 16 views
0

"/ voltiac" komutunu kullandığımda, bu hatayı konsolda yazdırır ve "Bu komutu gerçekleştirmeye çalışırken dahili bir hata oluştu" ifadesini minecraft'ta gösterir. Ancak "/ voltiac help" ve "/ voltiac" komutlarını yaptığımda mükemmel çalışıyorlar. Eklentiyi elde etmeye çalıştığım, "/ voltiac" komutunu verdiğimde, "/ voltiac" ile aynıydı. İşteMinecraft Bukkit Java Komut yapılırken hata oluştu

İşte benim kod

public boolean onCommand(CommandSender sender, Command command, String label, String[] args) { 
    Player player = (Player) sender; 

    // --------voltiac command-------- 
    if (label.equalsIgnoreCase("voltiac")) { 

     PluginDescriptionFile pdffile = getDescription(); 
     if (!(sender instanceof Player)) { 
      sender.sendMessage(TextFormat.playerOnly()); 
      return false; 
     } 
     if (args[0].equalsIgnoreCase("help")) { 
      player.sendMessage(ChatColor.RESET + "" + ChatColor.DARK_PURPLE + ChatColor.STRIKETHROUGH 
        + "-[-------------------------------------------]-"); 
      player.sendMessage(TextFormat.helpFormat("voltiac", "")); 
      player.sendMessage(TextFormat.helpFormat("voltiac about", "")); 
      player.sendMessage(TextFormat.helpFormat("voltiac help", "")); 
      player.sendMessage(TextFormat.helpFormat("", "")); 
      player.sendMessage(TextFormat.helpFormat("", "")); 
      player.sendMessage(ChatColor.RESET + "" + ChatColor.DARK_PURPLE + ChatColor.STRIKETHROUGH 
        + "-[-------------------------------------------]-"); 
     } else if (args[0].equalsIgnoreCase("about")) { 
      player.sendMessage(ChatColor.RESET + "" + ChatColor.DARK_PURPLE + ChatColor.STRIKETHROUGH 
        + "-[-------------------------------------------]-"); 
      player.sendMessage(TextFormat.aboutFormat("Name", "Voltiac")); 
      player.sendMessage(TextFormat.aboutFormat("Version", pdffile.getVersion())); 
      player.sendMessage(TextFormat.aboutFormat("Made by", "DiamondDeveloper")); 
      player.sendMessage(TextFormat.aboutFormat("Copyright", "Voltiac 2016")); 
      player.sendMessage(TextFormat.aboutFormat("Website", ChatColor.UNDERLINE + "www.voltiac.ml")); 
      player.sendMessage(ChatColor.RESET + "" + ChatColor.DARK_PURPLE + ChatColor.STRIKETHROUGH 
        + "-[-------------------------------------------]-"); 
      return true; 
     } else { 
      player.sendMessage(ChatColor.RESET + "" + ChatColor.DARK_PURPLE + ChatColor.STRIKETHROUGH 
        + "-[-------------------------------------------]-"); 
      player.sendMessage(TextFormat.aboutFormat("Name", "Voltiac")); 
      player.sendMessage(TextFormat.aboutFormat("Version", pdffile.getVersion())); 
      player.sendMessage(TextFormat.aboutFormat("Made by", "DiamondDeveloper")); 
      player.sendMessage(TextFormat.aboutFormat("Copyright", "Voltiac 2016")); 
      player.sendMessage(TextFormat.aboutFormat("Website", ChatColor.UNDERLINE + "www.voltiac.ml")); 
      player.sendMessage(ChatColor.RESET + "" + ChatColor.DARK_PURPLE + ChatColor.STRIKETHROUGH 
        + "-[-------------------------------------------]-"); 
      return true; 
     } 
     return true; 
    } 
    return false; 

} 
} 

Ben Bukkit forumlarında bu cevap var var hatası

[12:15:52] [Server thread/INFO]: DiamondDeveloper issued server command: /voltiac 
[12:15:52] [Server thread/ERROR]: null 
org.bukkit.command.CommandException: Unhandled exception executing command 'voltiac' in plugin Voltiac v0.4.4 
    at org.bukkit.command.PluginCommand.execute(PluginCommand.java:46) ~[craftbukkit-1.8.jar:git-Bukkit-18fbb24] 
    at org.bukkit.command.SimpleCommandMap.dispatch(SimpleCommandMap.java:140) ~[craftbukkit-1.8.jar:git-Bukkit-18fbb24] 
    at org.bukkit.craftbukkit.v1_8_R3.CraftServer.dispatchCommand(CraftServer.java:620) ~[craftbukkit-1.8.jar:git-Bukkit-18fbb24] 
    at net.minecraft.server.v1_8_R3.PlayerConnection.handleCommand(PlayerConnection.java:1106) [craftbukkit-1.8.jar:git-Bukkit-18fbb24] 
    at net.minecraft.server.v1_8_R3.PlayerConnection.a(PlayerConnection.java:966) [craftbukkit-1.8.jar:git-Bukkit-18fbb24] 
    at net.minecraft.server.v1_8_R3.PacketPlayInChat.a(SourceFile:37) [craftbukkit-1.8.jar:git-Bukkit-18fbb24] 
    at net.minecraft.server.v1_8_R3.PacketPlayInChat.a(SourceFile:9) [craftbukkit-1.8.jar:git-Bukkit-18fbb24] 
    at net.minecraft.server.v1_8_R3.PlayerConnectionUtils$1.run(SourceFile:13) [craftbukkit-1.8.jar:git-Bukkit-18fbb24] 
    at java.util.concurrent.Executors$RunnableAdapter.call(Unknown Source) [?:1.8.0_73] 
    at java.util.concurrent.FutureTask.run(Unknown Source) [?:1.8.0_73] 
    at net.minecraft.server.v1_8_R3.SystemUtils.a(SourceFile:44) [craftbukkit-1.8.jar:git-Bukkit-18fbb24] 
    at net.minecraft.server.v1_8_R3.MinecraftServer.B(MinecraftServer.java:673) [craftbukkit-1.8.jar:git-Bukkit-18fbb24] 
    at net.minecraft.server.v1_8_R3.DedicatedServer.B(DedicatedServer.java:335) [craftbukkit-1.8.jar:git-Bukkit-18fbb24] 
    at net.minecraft.server.v1_8_R3.MinecraftServer.A(MinecraftServer.java:629) [craftbukkit-1.8.jar:git-Bukkit-18fbb24] 
    at net.minecraft.server.v1_8_R3.MinecraftServer.run(MinecraftServer.java:537) [craftbukkit-1.8.jar:git-Bukkit-18fbb24] 
    at java.lang.Thread.run(Unknown Source) [?:1.8.0_73] 
Caused by: java.lang.ArrayIndexOutOfBoundsException: 0 
    at ml.voltiac.bukkit.Main.onCommand(Main.java:48) ~[?:?] 
    at org.bukkit.command.PluginCommand.execute(PluginCommand.java:44) ~[craftbukkit-1.8.jar:git-Bukkit-18fbb24] 
... 15 more 

olmakla Ne diyor nasıl ben yapacağım?

Neden Olduğu: java.lang.ArrayIndexOutOfBoundsException: 0 ml.voltiac.bukkit.Main.onCommand (Main.java:48) de ~ [:??]

Bir almaya çalışıyoruz Herhangi bir değer içermeyen bir diziden değer (temel Java problemi). Herhangi bir değer almadan önce 'args' dizisinde nesneler olduğundan emin olun.

(BTW "sender.sendMessage (TextFormat.playerOnly());" dir 48 hat) sınıfı sonra manipüle eğer StackTrace yanlış çizgiyi işaret edilmektedir olasılıkla

cevap

4

, bu durum oluşabilir herhangi bir şekilde derleme.

Günlük çıktısına bakarak çalıştırdığınız komutu /voltiac. Herhangi bir bağımsız değişken sağladığınızdan, args parametresi boş bir dizi olacaktır. muhtemelen istisna kaynağıdır

if (args[0].equalsIgnoreCase("help")) { 

: burada herhangi değişkenleri varsa

Daha sonra ilk kontrol etmeden args ilk elemanını erişmeyi deneyin. Bu, muhtemelen herhangi bir alt komuttan önce if (args.length == 0) denetimi yaparak düzeltilebileceği anlamına gelir.