Getting NPE's Not sure why

Discussion in 'Plugin Development' started by XxZHALO13Xx, Jan 23, 2015.

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

    XxZHALO13Xx

    Code:
    [09:42:20 ERROR]: Could not load 'plugins\TopRaidzCore.jar' in folder 'plugins'
    org.bukkit.plugin.InvalidPluginException: java.lang.NullPointerException
            at org.bukkit.plugin.java.JavaPluginLoader.loadPlugin(JavaPluginLoader.j
    ava:131) ~[craftbukkit.jar:git-Bukkit-1.7.2-R0.3-35-gd6ac518-b3061jnks]
            at org.bukkit.plugin.SimplePluginManager.loadPlugin(SimplePluginManager.
    java:328) ~[craftbukkit.jar:git-Bukkit-1.7.2-R0.3-35-gd6ac518-b3061jnks]
            at org.bukkit.plugin.SimplePluginManager.loadPlugins(SimplePluginManager
    .java:251) [craftbukkit.jar:git-Bukkit-1.7.2-R0.3-35-gd6ac518-b3061jnks]
            at org.bukkit.craftbukkit.v1_7_R3.CraftServer.loadPlugins(CraftServer.ja
    va:357) [craftbukkit.jar:git-Bukkit-1.7.2-R0.3-35-gd6ac518-b3061jnks]
            at org.bukkit.craftbukkit.v1_7_R3.CraftServer.reload(CraftServer.java:79
    9) [craftbukkit.jar:git-Bukkit-1.7.2-R0.3-35-gd6ac518-b3061jnks]
            at org.bukkit.Bukkit.reload(Bukkit.java:288) [craftbukkit.jar:git-Bukkit
    -1.7.2-R0.3-35-gd6ac518-b3061jnks]
            at org.bukkit.command.defaults.ReloadCommand.execute(ReloadCommand.java:
    23) [craftbukkit.jar:git-Bukkit-1.7.2-R0.3-35-gd6ac518-b3061jnks]
            at org.bukkit.command.SimpleCommandMap.dispatch(SimpleCommandMap.java:18
    0) [craftbukkit.jar:git-Bukkit-1.7.2-R0.3-35-gd6ac518-b3061jnks]
            at org.bukkit.craftbukkit.v1_7_R3.CraftServer.dispatchCommand(CraftServe
    r.java:703) [craftbukkit.jar:git-Bukkit-1.7.2-R0.3-35-gd6ac518-b3061jnks]
            at org.bukkit.craftbukkit.v1_7_R3.CraftServer.dispatchServerCommand(Craf
    tServer.java:690) [craftbukkit.jar:git-Bukkit-1.7.2-R0.3-35-gd6ac518-b3061jnks]
            at net.minecraft.server.v1_7_R3.DedicatedServer.aB(DedicatedServer.java:
    296) [craftbukkit.jar:git-Bukkit-1.7.2-R0.3-35-gd6ac518-b3061jnks]
            at net.minecraft.server.v1_7_R3.DedicatedServer.v(DedicatedServer.java:2
    61) [craftbukkit.jar:git-Bukkit-1.7.2-R0.3-35-gd6ac518-b3061jnks]
            at net.minecraft.server.v1_7_R3.MinecraftServer.u(MinecraftServer.java:5
    58) [craftbukkit.jar:git-Bukkit-1.7.2-R0.3-35-gd6ac518-b3061jnks]
            at net.minecraft.server.v1_7_R3.MinecraftServer.run(MinecraftServer.java
    :469) [craftbukkit.jar:git-Bukkit-1.7.2-R0.3-35-gd6ac518-b3061jnks]
            at net.minecraft.server.v1_7_R3.ThreadServerApplication.run(SourceFile:6
    28) [craftbukkit.jar:git-Bukkit-1.7.2-R0.3-35-gd6ac518-b3061jnks]
    Caused by: java.lang.NullPointerException
            at me.xxzhalo13xx.topraidzcore.economy.SettingsManagerRaidites.<init>(Se
    ttingsManagerRaidites.java:34) ~[?:?]
            at me.xxzhalo13xx.topraidzcore.economy.CommandManagerRaidites.<init>(Com
    mandManagerRaidites.java:25) ~[?:?]
            at me.xxzhalo13xx.topraidzcore.Core.<init>(Core.java:47) ~[?:?]
            at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
    ~[?:1.7.0_51]
            at sun.reflect.NativeConstructorAccessorImpl.newInstance(Unknown Source)
    ~[?:1.7.0_51]
            at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(Unknown Sou
    rce) ~[?:1.7.0_51]
            at java.lang.reflect.Constructor.newInstance(Unknown Source) ~[?:1.7.0_5
    1]
            at java.lang.Class.newInstance(Unknown Source) ~[?:1.7.0_51]
            at org.bukkit.plugin.java.PluginClassLoader.<init>(PluginClassLoader.jav
    a:52) ~[craftbukkit.jar:git-Bukkit-1.7.2-R0.3-35-gd6ac518-b3061jnks]
            at org.bukkit.plugin.java.JavaPluginLoader.loadPlugin(JavaPluginLoader.j
    ava:127) ~[craftbukkit.jar:git-Bukkit-1.7.2-R0.3-35-gd6ac518-b3061jnks]
            ... 14 more
    Full class

    Code:
    package me.xxzhalo13xx.topraidzcore.economy;
    
    import me.xxzhalo13xx.topraidzcore.Core;
    import org.bukkit.configuration.ConfigurationSection;
    import org.bukkit.configuration.file.FileConfiguration;
    import org.bukkit.configuration.file.YamlConfiguration;
    import org.bukkit.entity.Player;
    import org.bukkit.plugin.Plugin;
    
    import java.io.File;
    
    /**
    * Created by ZH on 1/16/2015.
    */
    
    import java.io.File;
    import java.util.ArrayList;
    import java.util.Map;
    import java.util.Map.Entry;
    
    import org.bukkit.Bukkit;
    import org.bukkit.configuration.file.FileConfiguration;
    import org.bukkit.configuration.file.YamlConfiguration;
    import org.bukkit.plugin.Plugin;
    
    public class SettingsManagerRaidites {
    
        private final Core p;
        private final FileConfiguration config;
        private final File cfile;
    
        public SettingsManagerRaidites(Core p){
            this.p = p;
            this.cfile = new File(p.getDataFolder(), "raidites.yml");
            this.config = YamlConfiguration.loadConfiguration(cfile);
            if (!cfile.exists()){
                try{ cfile.createNewFile(); }
                catch (Exception e) { e.printStackTrace(); }
            }
    
    
    
        }
    
    
    
        /*
         * money:
         *   XxZHALO13Xx: 29
         *   blah: 67
         */
        public double getBalance(String p) {
            return config.getDouble("raidites." + p);
        }
    
        public void addBalance(String p, double amnt) {
            setBalance(p, getBalance(p) + amnt);
        }
    
        public boolean removeBalance(String p, double amnt) {
            if (getBalance(p) - amnt < 0) return false;
    
            setBalance(p, getBalance(p) - amnt);
            return true;
        }
    
        public void setBalance(String p, double amnt) {
            config.set("raidites." + p.toLowerCase(), amnt);
            save();
    
    
        }
    
        public ArrayList<String> getValues() {
            Map<String, Object> map = config.getValues(true);
            ArrayList<String> lines = new ArrayList<String>();
    
            for (Entry<String, Object> e : map.entrySet()) {
                lines.add(e.getValue() + " " + e.getKey());
            }
    
            return lines;
        }
    
        private void save() {
            try { config.save(cfile); }
            catch (Exception e) { e.printStackTrace(); }
        }
    
        public Plugin getPlugin() {
            return p;
        }
    }
    Line 34: this.cfile = new File(p.getDataFolder(), "raidites.yml");
     
  2. Offline

    teej107

    @XxZHALO13Xx "p" is null. You could be passing a null value through the parameters
     
  3. Offline

    XxZHALO13Xx

    @teej107 but in the constructor i say that p is equal to core's p
     
  4. Offline

    teej107

    @XxZHALO13Xx Yeah and core's "p" is null. The value of "p" that you are passing through the parameters is null!
    Code:
    this.cfile = new File(p.getDataFolder(), "raidites.yml");
    If you are for sure that this line is causing a NPE, it has to be "p" that is null because you are basically doing
    Code:
    null.getDataFolder()
    File won't throw a NPE if the value of getDataFolder() returns null, I read the documentation on File.
     
    Konato_K likes this.
  5. Offline

    XxZHALO13Xx

    @teej107 what would i do to make Core's p not null then?
     
  6. Offline

    teej107

    @XxZHALO13Xx Don't pass a null value in the parameters when instantiating the SettingsManagerRaidites class.
     
  7. Offline

    XxZHALO13Xx

    @teej107

    Code:
     
    private final Plugin p;
     public SettingsManagerRaidites(Core plugin){
            this.p = plugin;
            this.cfile = new File(plugin.getDataFolder(), "raidites.yml");
            this.config = YamlConfiguration.loadConfiguration(cfile);
            if (!cfile.exists()){
                try{ cfile.createNewFile(); }
                catch (Exception e) { e.printStackTrace(); }
            }
    
    \
    still getting null on this
     
  8. Offline

    teej107

    @XxZHALO13Xx Changing the variable name won't stop NPEs.
     
  9. Offline

    XxZHALO13Xx

    @teej107 would i do private final Core plugin = new Core();
     
  10. Offline

    1Rogue

    No, you would do the thing that he said to do 4 posts ago:

     
  11. Offline

    XxZHALO13Xx

    @1Rogue i don't now what he means...

    Code:
        private final Core p;
       
        private final FileConfiguration config;
        private final File cfile;
    
        public SettingsManagerRaidites(Core p){
            this.p = new Core();
            this.cfile = new File(p.getDataFolder(), "raidites.yml");
            this.config = YamlConfiguration.loadConfiguration(cfile);
            if (!cfile.exists()){
                try{ cfile.createNewFile(); }
                catch (Exception e) { e.printStackTrace(); }
            }
    
    
    
        }
    
    this?
     
  12. Offline

    teej107

    @XxZHALO13Xx No, this is getting even worse now. Don't do that. Don't ever instantiate a JavaPlugin class by yourself.
    When you instantiate/create the SettingsManagerRaidites class, you are basically doing this:
    Code:
    new SettingsManagerRaidites(null);
     
  13. Offline

    XxZHALO13Xx

  14. Offline

    teej107

    @XxZHALO13Xx Like you fix any other NullPointerException.
     
  15. Offline

    1Rogue

Thread Status:
Not open for further replies.

Share This Page