L'autre jour, sur Twitter, "[Vous n'êtes désespérément pas apte à la programmation, alors abandonnez et faites le travail de mettre des pissenlits sur sashimi](https://megalodon.jp/2019-0105-0145-49/note.mu/ Un article intitulé "kotofurumiya / n / n31d401fce782)" est apparu, mais je le recommande car il était très intéressant. Il y avait un contenu dans ce qu'il y avait trop d'étudiants qui ne pouvaient pas lire le journal des erreurs, et il y avait de nombreuses sections auxquelles je pouvais penser, donc pour le moment, je me concentrerai sur le plug-in Spigot et expliquerai comment lire le journal des erreurs. J'écris soudainement.
Eh bien, tout d'abord, je ne parlerai pas sans journal des erreurs. Par souci d'explication, j'ai intentionnellement créé un plugin qui déclenche NullPointerException.
QiitaPlugin.java
package com.github.siloneco.qiita;
import org.bukkit.Bukkit;
import org.bukkit.entity.Player;
import org.bukkit.event.EventHandler;
import org.bukkit.event.Listener;
import org.bukkit.event.player.PlayerJoinEvent;
import org.bukkit.plugin.java.JavaPlugin;
public class QiitaPlugin extends JavaPlugin implements Listener {
@Override
public void onEnable() {
Bukkit.getPluginManager().registerEvents(this, this);
Bukkit.getLogger().info(getName() + " enabled.");
}
@Override
public void onDisable() {
Bukkit.getLogger().info(getName() + " disabled.");
}
@EventHandler
public void onJoin(PlayerJoinEvent e) {
Player p = null;
p.sendMessage("test");
}
}
Avec ce code, quand quelqu'un rejoint le serveur, il envoie un sendMessage nul et une erreur se produit. Et le journal des erreurs lorsque cela a réellement participé
latest.log
[14:23:24 ERROR]: Could not pass event PlayerJoinEvent to QiitaPlugin v1.0.0
org.bukkit.event.EventException: null
at org.bukkit.plugin.java.JavaPluginLoader$1.execute(JavaPluginLoader.java:306) ~[spigot-1.12.2.jar:git-Spigot-79a30d7-acbc348]
at org.bukkit.plugin.RegisteredListener.callEvent(RegisteredListener.java:62) ~[spigot-1.12.2.jar:git-Spigot-79a30d7-acbc348]
at org.bukkit.plugin.SimplePluginManager.fireEvent(SimplePluginManager.java:500) [spigot-1.12.2.jar:git-Spigot-79a30d7-acbc348]
at org.bukkit.plugin.SimplePluginManager.callEvent(SimplePluginManager.java:485) [spigot-1.12.2.jar:git-Spigot-79a30d7-acbc348]
at net.minecraft.server.v1_12_R1.PlayerList.onPlayerJoin(PlayerList.java:346) [spigot-1.12.2.jar:git-Spigot-79a30d7-acbc348]
at net.minecraft.server.v1_12_R1.PlayerList.a(PlayerList.java:166) [spigot-1.12.2.jar:git-Spigot-79a30d7-acbc348]
at net.minecraft.server.v1_12_R1.LoginListener.b(LoginListener.java:159) [spigot-1.12.2.jar:git-Spigot-79a30d7-acbc348]
at net.minecraft.server.v1_12_R1.LoginListener.e(LoginListener.java:57) [spigot-1.12.2.jar:git-Spigot-79a30d7-acbc348]
at net.minecraft.server.v1_12_R1.NetworkManager.a(NetworkManager.java:233) [spigot-1.12.2.jar:git-Spigot-79a30d7-acbc348]
at net.minecraft.server.v1_12_R1.ServerConnection.c(ServerConnection.java:140) [spigot-1.12.2.jar:git-Spigot-79a30d7-acbc348]
at net.minecraft.server.v1_12_R1.MinecraftServer.D(MinecraftServer.java:845) [spigot-1.12.2.jar:git-Spigot-79a30d7-acbc348]
at net.minecraft.server.v1_12_R1.DedicatedServer.D(DedicatedServer.java:406) [spigot-1.12.2.jar:git-Spigot-79a30d7-acbc348]
at net.minecraft.server.v1_12_R1.MinecraftServer.C(MinecraftServer.java:679) [spigot-1.12.2.jar:git-Spigot-79a30d7-acbc348]
at net.minecraft.server.v1_12_R1.MinecraftServer.run(MinecraftServer.java:577) [spigot-1.12.2.jar:git-Spigot-79a30d7-acbc348]
at java.lang.Thread.run(Unknown Source) [?:1.8.0_231]
Caused by: java.lang.NullPointerException
at com.github.siloneco.qiita.QiitaPlugin.onJoin(QiitaPlugin.java:26) ~[?:?]
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[?:1.8.0_231]
at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source) ~[?:1.8.0_231]
at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source) ~[?:1.8.0_231]
at java.lang.reflect.Method.invoke(Unknown Source) ~[?:1.8.0_231]
at org.bukkit.plugin.java.JavaPluginLoader$1.execute(JavaPluginLoader.java:302) ~[spigot-1.12.2.jar:git-Spigot-79a30d7-acbc348]
... 14 more
Un journal des erreurs a été généré avec succès.
Lisons ce journal immédiatement. Ici, j'ai essayé de le colorier pour une meilleure compréhension. ** La seule partie que vous devez vraiment voir est la partie de couleur sombre **. Même si le journal des erreurs est si long, il y a si peu d'endroits à lire. Beaucoup de gens ne le savent pas, donc je ne peux pas lire le journal des erreurs. La procédure est très simple, mais vous devez d'abord vous souvenir du nom du package du plugin que vous créez. Ici, il s'agit de `` com.github.siloneco.qiita ''.
Dans l'image ci-dessus, c'est la partie bleu clair. Contient le nom du package du plugin que vous créez actuellement. La ligne commençant par à décrit l'emplacement de l'erreur, il vous suffit donc de regarder le nom du package utilisé par votre plugin. Fondamentalement, il est souvent juste après Causé par.
Dans l'image ci-dessus, il s'agit de la partie verte (QiitaPlugin.java:26) ''. Cela montre l'emplacement de l'erreur sous la forme de
(nom du fichier: nombre de lignes) ''. Dans le cas de cet exemple, cela signifie qu'une erreur s'est produite dans la ligne 26 '' du fichier
QiitaPlugin.java``.
Faites attention à la partie verte restante. La couleur verte en haut (Impossible de passer l'événement PlayerJoinEvent à QiitaPlugin v1.0.0 '') n'est pas pertinente ici, mais je l'ai rendue verte pour le moment car la raison de l'erreur est parfois écrite ici. Cette fois, il y a un rapport indiquant que
QiitaPlugin version 1.0.0 PlayerJoinEvent n'a pas pu être traité normalement ''. ** Si vous ne pouvez pas lire l'anglais, veuillez utiliser Google Traduction. Il sera renvoyé en japonais compréhensible. ** **
Jetez un œil à la couleur verte suivante (Causé par: java.lang.NullPointerException ''). Cela est évident si vous le lisez déjà.
Causé par ~ '' signifie causé par '' ~, donc dans ce cas, il peut être compris comme
causé par java.lang.NullPointerException ''. En d'autres termes,
l'erreur qui s'est produite est une exception java.lang.NullPointerException ''.
Si vous ne pouvez pas l'organiser dans votre tête, vous pouvez l'écrire sur papier ou dans un bloc-notes. Organisons les informations obtenues en 1-3.
QiitaPlugin.Il y a une erreur sur la ligne 26 de java.
L'erreur qui s'est produite est java.lang.NullPointerException.
Pas nécessaire si vous le savez déjà. Veuillez voler à 6. L'erreur qui s'est produite cette fois est java.lang.NullPointerException. Fouillons cela dans Google et découvrons-le. Il y aura peut-être de nombreux cas. S'il n'apparaît pas, ajoutez "solution" etc. au mot de recherche et il apparaîtra essentiellement. Si cela ne fonctionne pas, ajoutez «réparer», etc. Lors de la lecture de divers articles, il semble que NullPointerException soit une erreur ** qui se produit lorsque vous exécutez ** null avec un point (.) Connecté à lui **.
Jetons un œil au code en question
QiitaPlugin.java-24e ligne
p.sendMessage("test");
Eh bien, dans cette ligne, la seule chose qui relie les points est p ''. Il est donc très probable que
p '' soit nul. Allons vérifier
QiitaPlugin.java-Ligne 23-27e ligne
@EventHandler
public void onJoin(PlayerJoinEvent e) {
Player p = null;
p.sendMessage("test");
}
Après tout, nul a été attribué à `` p ''. Il est résolu en changeant en ʻe.getPlayer ()
`.
C'est une histoire commune. Revenons à 1 et résolvons la nouvelle erreur.
S'il y a une erreur qui ne peut être résolue par tous les moyens, il est plus rapide de demander à une personne. Il existe de nombreuses façons de faire cela, comme écouter dans la communauté ou demander à quelqu'un qui est meilleur que vous. Ce à quoi je veux que tu fasses attention à ce moment-là
Faites attention à ces choses et posez des questions. ** Les erreurs complexes qui ne peuvent pas être résolues en regardant uniquement le journal des erreurs sont probablement liées à l'environnement. ** Par exemple, quelle est la version Java, quelle est la version du serveur, qu'est-ce que l'erreur se produit, quel type de changement a été effectué si cela fonctionnait normalement avant le changement, etc. Besoin de beaucoup d'informations. ~~ Veuillez arrêter s'il semble être cassé même si vous n'avez rien fait () ~~
C'était le premier article de Qiita, mais j'espère que cela aidera autant de développeurs de plugins que possible. Les thèmes et les questions sur les plugins sont acceptés dans la Boîte à thèmes, donc si vous en avez envie, veuillez le mettre. Eh bien.
21/04 - Je n'avais pas besoin du titre
Recommended Posts