Frage von MisterNeugier, 60

Habe eine NullPointExeption?

Ich bin gerade zu doof meine nullPointException zu lösen :(

Error: http://pastebin.com/MdbWCPeX

MainClass:

@Override
public void onEnable() 
{
    initCommand();
    Bukkit.getConsoleSender().sendMessage(NAME + "§2Das Plugin wurde aktiviert.");
}

@Override
public void onDisable()
{
    Bukkit.getConsoleSender().sendMessage(NAME + "§2Das Plugin wurde deaktiviert.");
}

private void initCommand()
{
    this.getCommand("test").setExecutor(new test());
}

Der fehler tritt hier auf:

this.getCommand("test").setExecutor(new test());

NAME ist ein String der weiter oben initalisiert und deklariert wird. Meine test Klasse: public class test implements CommandExecutor {

@Override
public boolean onCommand(CommandSender arg0, Command arg1, String arg2, String[] arg3) {
    if (arg0 instanceof Player)
    {
        System.out.println("Test");
    }
    return false;
}
Antwort
von anon6378, 33

Das mit test sollte man lassen. Nenn es mal konkret um und probier es nochmal.

Kommentar von MisterNeugier ,

warum sollte man es lassen? Da bin ich jetzt gespannt? :)

Kommentar von triopasi ,

Weil der Name 100% nichtssagend ist und zudem klein geschrieben ist.

Kommentar von MisterNeugier ,

jap das ist mir bewusst hehe :) aber das ist egal wie er geschrieben ist und doch in diesem fall sagt er alles aus es ist ein test! ABer klar sonst sollte man aussagekräftige namen nehmen. Das brauchst du mir nicht sagen :) danke aber :)

Kommentar von triopasi ,

Klassennamen werden am Anfang groß geschrieben, das besagen die Java Konventionen ;)

Kommentar von MisterNeugier ,

glaub mir die Java Konventionen sind mir egal :) ehhehe java ist ein verstoß gegen die Programmierung :) diese Sprache ist eckelhaft ich bleibe bei C#

Kommentar von triopasi ,

C# werden Klassennamen auch groß geschrieben btw. Methoden und Properties beginnen in C# auch mit nem Großbuchstaben. PS: Konventionen helfen besseren Code zu schreiben, glaub mir.

Kommentar von androhecker ,

Interessant, du bleibst bei C# und benutzt Java, wie soll das bitte gehen? Und du kommst hier mit sehr hohen Anschuldigungen gegen Java, nennst aber keinen einzigen Grund dafür.

Antwort
von androhecker, 36

Das passiert fast immer wenn das Command nicht in der plugin.yml ist.
Aber das hier noch merken:
1. Wieso ist nur die Exception auf pastebin? Soll ich die Zeilenangaben jetzt erraten und versuchen so furchtbar formatierten Text zu lesen?
2. Die Klasse heißt test, das machen nur Leute die kein Java können. So ein Name ist null Aussagekräftig und dazu auch noch gegen die Code Conventions. Sonst kommt noch sowas raus:
test test = new test();
Das ist echt das Letzte.

Kommentar von MisterNeugier ,

Ich weiß aber es ist zur zeit eine testklasse, da ich erstmal den fehler heraus bekommen und zum Thema aussage kräftigen klassen namen keine angst aber da kenne ich mich aus :)

Antwort
von triopasi, 36

Welche Zeile ist denn der Fehler?

Kommentar von MisterNeugier ,

der fehler tritt bei:

this.getCommand("test").setExecutor(new test());
}
Kommentar von androhecker ,

Das kannst du so ohne Spigot Kenntnisse nicht wissen, deshalb hier mal die entsprechende Methode: https://hub.spigotmc.org/javadocs/spigot/org/bukkit/plugin/java/JavaPlugin.html#...(java.lang.String) Ist ziemlich Selbsterklärend.

Kommentar von anon6378 ,

Wahrscheinlich die letzte ich wittere einen Troll :)

Kommentar von triopasi ,

Danke androhecker, @Fragesteller: les mal die Dokumentation. Das ist kein Java Fehler, das ist ein "nicht lesen können" Fehler.

Kommentar von MisterNeugier ,

What? hahah

Kommentar von triopasi ,

MisterNeugier, geh auf den Link, den androhecker gepostet hat und schau was da zu "getCommand" steht. Da ist genau der Fehler den du offensichtlich machst. Solltest mal lernen, wie man Dokumentationen liest.

Kommentar von MisterNeugier ,

... ich sage mal nichts zu dem fehler... immer diese groß und kleinschreibung,......

Sie kennen die Antwort?

Fragen Sie die Community