Neulich auf Twitter: "Sie sind verzweifelt nicht zum Programmieren geeignet, geben Sie also auf und machen Sie Löwenzahn auf Sashimi Ein Artikel mit dem Titel "kotofurumiya / n / n31d401fce782)" kam auf den Markt, aber ich empfehle ihn, weil er sehr interessant war. Es gab einen Inhalt darin, dass es zu viele College-Studenten gab, die das Fehlerprotokoll nicht lesen konnten, und es gab viele Abschnitte, an die ich denken konnte. Daher werde ich mich vorerst auf das Spigot-Plugin konzentrieren und erklären, wie man das Fehlerprotokoll liest. Ich schreibe plötzlich.
Zunächst einmal werde ich nicht ohne Fehlerprotokoll sprechen. Zur Erklärung habe ich absichtlich ein Plugin erstellt, das [NullPointerException] auslöst (https://docs.oracle.com/javase/jp/8/docs/api/java/lang/NullPointerException.html).
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");
}
}
Wenn sich jemand dem Server anschließt, sendet er mit diesem Code eine null sendMessage und es tritt ein Fehler auf. Und das Fehlerprotokoll, als dies tatsächlich teilnahm
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
Ein Fehlerprotokoll wurde erfolgreich generiert.
Lesen wir dieses Protokoll sofort. Hier habe ich versucht, es zum leichteren Verständnis zu färben. ** Der einzige Teil, den Sie wirklich sehen müssen, ist der dunkle Teil **. Obwohl es sich um ein so langes Fehlerprotokoll handelt, gibt es so wenige Stellen zum Lesen. Viele Leute wissen das nicht, deshalb kann ich das Fehlerprotokoll nicht lesen. Das Verfahren ist sehr einfach, aber zuerst müssen Sie sich den Paketnamen des Plugins merken, das Sie erstellen. Hier ist es "com.github.siloneco.qiita".
Im obigen Bild ist es der hellblaue Teil. Enthält den Paketnamen des Plugins, das Sie gerade erstellen. Die Zeile, die mit at beginnt, beschreibt den Ort des Fehlers. Sie müssen sich also nur den Paketnamen ansehen, der von Ihrem Plugin verwendet wird. Grundsätzlich ist es oft direkt nach Caused by.
Im obigen Bild ist es der grüne (QiitaPlugin.java:26)
Teil. Dies zeigt den Ort des Fehlers in Form von (Dateiname: Anzahl der Zeilen)
. In diesem Beispiel bedeutet dies, dass in Zeile 26 der Datei "QiitaPlugin.java" ein Fehler aufgetreten ist.
Achten Sie auf den verbleibenden grünen Teil. Die grüne Farbe oben ( Event PlayerJoinEvent konnte nicht an QiitaPlugin v1.0.0
übergeben werden) ist hier irrelevant, aber ich habe sie vorerst grün gemacht, da der Grund für den Fehler manchmal hier geschrieben ist. Dieses Mal gibt es einen Bericht, dass "QiitaPlugin Version 1.0.0 PlayerJoinEvent nicht normal verarbeitet werden konnte". ** Wenn Sie kein Englisch lesen können, verwenden Sie bitte Google Translation. Es wird in verständlichem Japanisch zurückgegeben. ** ** **
Schauen Sie sich die folgende grüne Farbe an ( Verursacht durch: java.lang.NullPointerException
). Dies ist offensichtlich, wenn Sie es bereits gelesen haben. Verursacht durch ~
bedeutet verursacht durch
~, daher kann es in diesem Fall als verursacht durch
java.lang.NullPointerException `` verstanden werden. Mit anderen Worten, der aufgetretene Fehler ist eine java.lang.NullPointerException.
Wenn Sie es nicht in Ihrem Kopf organisieren können, können Sie es auf Papier oder in einen Notizblock schreiben. Lassen Sie uns die Informationen in 1-3 organisieren.
QiitaPlugin.In Zeile 26 von Java ist ein Fehler aufgetreten.
Der aufgetretene Fehler ist Java.lang.NullPointerException.
Wird nicht benötigt, wenn Sie es bereits wissen. Bitte fliegen Sie bis 6. Der diesmal aufgetretene Fehler ist java.lang.NullPointerException. Lassen Sie uns dies in Google graben und herausfinden. Vielleicht gibt es viele Fälle. Wenn es nicht angezeigt wird, fügen Sie dem Suchwort "Lösung" usw. hinzu, und es wird im Grunde angezeigt. Wenn das nicht funktioniert, fügen Sie "Fix" usw. hinzu und lesen Sie Artikel aus Übersee. Beim Lesen verschiedener Artikel scheint NullPointerException ein Fehler ** zu sein, der auftritt, wenn Sie ** null mit einem damit verbundenen Punkt (.) Ausführen **.
Werfen wir einen Blick auf den betreffenden Code
QiitaPlugin.java-24. Zeile
p.sendMessage("test");
Nun, in dieser Zeile ist das einzige, was die Punkte verbindet, "p". Es ist also sehr wahrscheinlich, dass p
null ist. Lass uns nachsehen
QiitaPlugin.java-Zeile 23-27. Zeile
@EventHandler
public void onJoin(PlayerJoinEvent e) {
Player p = null;
p.sendMessage("test");
}
Immerhin wurde p
null zugewiesen. Die Lösung besteht darin, es in "e.getPlayer ()" zu ändern.
Dies ist eine häufige Geschichte. Kehren wir zu 1 zurück und beheben Sie den neuen Fehler.
Wenn es einen Fehler gibt, der nicht mit allen Mitteln behoben werden kann, ist es schneller, eine Person zu fragen. Es gibt viele Möglichkeiten, dies zu tun, z. B. in der Community zuzuhören oder jemanden zu fragen, der besser ist als Sie. Was ich möchte, dass Sie zu dieser Zeit vorsichtig sind
Bitte seien Sie vorsichtig mit diesen Dingen und stellen Sie Fragen. ** Komplexe Fehler, die nicht nur durch Betrachten des Fehlerprotokolls behoben werden können, hängen wahrscheinlich mit der Umgebung zusammen. ** Zum Beispiel, was ist die Java-Version, was ist die Serverversion, was tritt der Fehler auf, welche Art von Änderung wurde vorgenommen, wenn sie vor der Änderung normal funktionierte usw. Benötigt viele Informationen. ~~ Bitte hör auf, wenn es kaputt zu sein scheint, obwohl du nichts getan hast () ~~
Dies war Qiitas erster Beitrag, aber ich hoffe, dies hilft so vielen Plugin-Entwicklern wie möglich. Themen und Fragen zu Plugins werden in der Themenbox akzeptiert. Wenn Sie also Lust dazu haben, geben Sie sie bitte ein. Na dann.
21.04. - Ich brauchte den Titel nicht
Recommended Posts