Solved NPE w/ Stacktrace

Discussion in 'Plugin Development' started by Dubehh, Aug 17, 2014.

Thread Status:
Not open for further replies.
  1. Offline

    Dubehh

    Hi there,

    Im getting this NullPointerException, which I don't know the answer to.
    Stack
    Code:
    [14:45:41 ERROR]: Error occurred while enabling NumberOne v0.1 (Is it up to date?)
    java.lang.NullPointerException
            at me.dubehh.Locations.SpawnLocations.<init>(SpawnLocations.java:18) ~[?:?]
            at me.dubehh.Main.NumberOne.load(NumberOne.java:34) ~[?:?]
            at me.dubehh.Main.NumberOne.onEnable(NumberOne.java:27) ~[?:?]
            at org.bukkit.plugin.java.JavaPlugin.setEnabled(JavaPlugin.java:250) ~[craftbukkit.jar:git-B
    ukkit-1.7.2-R0.2-14-g15b04d8-b2991jnks]
            at org.bukkit.plugin.java.JavaPluginLoader.enablePlugin(JavaPluginLoader.java:350) [craftbuk
    kit.jar:git-Bukkit-1.7.2-R0.2-14-g15b04d8-b2991jnks]
            at org.bukkit.plugin.SimplePluginManager.enablePlugin(SimplePluginManager.java:384) [craftbu
    kkit.jar:git-Bukkit-1.7.2-R0.2-14-g15b04d8-b2991jnks]
            at org.bukkit.craftbukkit.v1_7_R1.CraftServer.loadPlugin(CraftServer.java:300) [craftbukkit.
    jar:git-Bukkit-1.7.2-R0.2-14-g15b04d8-b2991jnks]
            at org.bukkit.craftbukkit.v1_7_R1.CraftServer.enablePlugins(CraftServer.java:282) [craftbukk
    it.jar:git-Bukkit-1.7.2-R0.2-14-g15b04d8-b2991jnks]
            at org.bukkit.craftbukkit.v1_7_R1.CraftServer.reload(CraftServer.java:632) [craftbukkit.jar:
    git-Bukkit-1.7.2-R0.2-14-g15b04d8-b2991jnks]
            at org.bukkit.Bukkit.reload(Bukkit.java:279) [craftbukkit.jar:git-Bukkit-1.7.2-R0.2-14-g15b0
    4d8-b2991jnks]
            at org.bukkit.command.defaults.ReloadCommand.execute(ReloadCommand.java:23) [craftbukkit.jar
    :git-Bukkit-1.7.2-R0.2-14-g15b04d8-b2991jnks]
            at org.bukkit.command.SimpleCommandMap.dispatch(SimpleCommandMap.java:199) [craftbukkit.jar:
    git-Bukkit-1.7.2-R0.2-14-g15b04d8-b2991jnks]
            at org.bukkit.craftbukkit.v1_7_R1.CraftServer.dispatchCommand(CraftServer.java:544) [craftbu
    kkit.jar:git-Bukkit-1.7.2-R0.2-14-g15b04d8-b2991jnks]
            at org.bukkit.craftbukkit.v1_7_R1.CraftServer.dispatchServerCommand(CraftServer.java:531) [c
    raftbukkit.jar:git-Bukkit-1.7.2-R0.2-14-g15b04d8-b2991jnks]
            at net.minecraft.server.v1_7_R1.DedicatedServer.aw(DedicatedServer.java:286) [craftbukkit.ja
    r:git-Bukkit-1.7.2-R0.2-14-g15b04d8-b2991jnks]
            at net.minecraft.server.v1_7_R1.DedicatedServer.u(DedicatedServer.java:251) [craftbukkit.jar
    :git-Bukkit-1.7.2-R0.2-14-g15b04d8-b2991jnks]
            at net.minecraft.server.v1_7_R1.MinecraftServer.t(MinecraftServer.java:545) [craftbukkit.jar
    :git-Bukkit-1.7.2-R0.2-14-g15b04d8-b2991jnks]
            at net.minecraft.server.v1_7_R1.MinecraftServer.run(MinecraftServer.java:457) [craftbukkit.j
    ar:git-Bukkit-1.7.2-R0.2-14-g15b04d8-b2991jnks]
            at net.minecraft.server.v1_7_R1.ThreadServerApplication.run(SourceFile:617) [craftbukkit.jar
    :git-Bukkit-1.7.2-R0.2-14-g15b04d8-b2991jnks]
    Main:
    Code:java
    1. public class NumberOne extends JavaPlugin{
    2.  
    3. public GameSetup game;
    4. public SpawnLocations spawnloc;
    5. public LobbyLocation lobbyloc;
    6. public ShopLocation shoploc;
    7. public PointSystem point_system;
    8.  
    9. public void onEnable(){
    10. loadMisc();
    11. load(); //Line 27
    12. loadEvent();
    13. loadCmd();
    14. }
    15.  
    16.  
    17. public void load(){
    18. spawnloc = new SpawnLocations(this); //Line 34
    19. game = new GameSetup(this);
    20. lobbyloc = new LobbyLocation(this);
    21. shoploc = new ShopLocation(this);
    22. point_system = new PointSystem(this);
    23. }
    24.  
    25. public void loadEvent(){
    26. PluginManager pm = Bukkit.getPluginManager();
    27. pm.registerEvents(new OnJoinServer(this), this);
    28. pm.registerEvents(new OnLeaveServer(this), this);
    29. pm.registerEvents(new OnDamage(this), this);
    30.  
    31. }
    32.  
    33. public void loadCmd(){
    34. getCommand("NO").setExecutor(new AdminCommand(this));
    35. }
    36.  
    37. public void loadMisc(){
    38. getConfig().options().copyDefaults(true);
    39. saveConfig();
    40. }
    41.  
    42. }



    Line 18 in SpawnLocations.jar

    Code:java
    1. public class SpawnLocations {
    2.  
    3. private NumberOne m;
    4. public SpawnLocations(NumberOne instance){
    5. m = instance;
    6. }
    7. List<String> spawnLoc = m.getConfig().getStringList("SpawnLocations"); //Here
    8.  
    9. public void saveSpawnLocation(Player p){
    10. Location loc = p.getLocation();
    11. String loc_string = Loc2String(loc);
    12. spawnLoc.add(loc_string);
    13. m.getConfig().set("SpawnLocations", spawnLoc);
    14. m.saveConfig();
    15.  
    16. }
    17.  
     
  2. Dubehh how can this error happen:
    at me.dubehh.Locations.SpawnLocations.<init>(SpawnLocations.java:18) ~[?:?]
    , if there is no line 18 in SpawnLocations.java?
     
  3. Offline

    Dubehh

    Datdenkikniet

    There is a line 18 lol.
    I marked it with 'here'.
    Remember a class always has those 'import blablabla' en package stuff.

    I just copy'd it from public class.

    Datdenkikniet
    Code:java
    1. package me.dubehh.Locations;
    2.  
    3. import java.util.List;
    4. import java.util.Random;
    5.  
    6. import me.dubehh.Main.NumberOne;
    7.  
    8. import org.bukkit.Bukkit;
    9. import org.bukkit.Location;
    10. import org.bukkit.entity.Player;
    11.  
    12. public class SpawnLocations {
    13.  
    14. private NumberOne m;
    15. public SpawnLocations(NumberOne instance){
    16. m = instance;
    17. }
    18. List<String> spawnLoc = m.getConfig().getStringList("SpawnLocations");
    19.  
    20. public void saveSpawnLocation(Player p){
    21. Location loc = p.getLocation();
    22. String loc_string = Loc2String(loc);
    23. spawnLoc.add(loc_string);
    24. m.getConfig().set("SpawnLocations", spawnLoc);
    25. m.saveConfig();
    26.  
    27. }


    EDIT by Moderator: merged posts, please use the edit button instead of double posting.
     
    Last edited by a moderator: Jun 9, 2016
  4. Offline

    Dubehh

    Bump!
     
  5. Dubehh lel, no bumping within 24 hours :>
    I think your config/the stringlist SpawnLocations must be null
     
  6. Offline

    coldandtired

    This line
    List<String> spawnLoc = m.getConfig().getStringList("SpawnLocations");
    is outside of any method.

    This means it will be run when the class is created and before the constructor runs. At this point there is no m set so it is null.

    Code:java
    1.  
    2. private NumberOne m;
    3. List<String> spawnLoc = m.getConfig().getStringList("SpawnLocations");
    4.  
    5.  
    6. public SpawnLocations(NumberOne instance){
    7. m = instance;
    8. }


    That's how it looks another way. To solve it you need to put it in a method that's called after m is set (after m = instance; ).
     
  7. Offline

    Dubehh

    Datdenkikniet
    O lol. I went full retard.
    I actually defined it w/o checking for a null (ofcourse)
    Thanks.

    coldandtired
    Yup, got it :)

    EDIT by Moderator: merged posts, please use the edit button instead of double posting.
     
    Last edited by a moderator: Jun 9, 2016
    Datdenkikniet likes this.
Thread Status:
Not open for further replies.

Share This Page