InvalidPluginException: File cannot be null

Discussion in 'Plugin Development' started by Benedikt Wüller, Apr 19, 2012.

Thread Status:
Not open for further replies.
  1. Hey there,
    I get this Error:
    Code:
    [SEVERE] Could not load 'plugins\GodLogin-1.0.jar' in folder 'plugins'
    org.bukkit.plugin.InvalidPluginException: java.lang.IllegalArgumentException: File cannot be null
        at org.bukkit.plugin.java.JavaPluginLoader.loadPlugin(JavaPluginLoader.java:148)
        at org.bukkit.plugin.SimplePluginManager.loadPlugin(SimplePluginManager.java:305)
        at org.bukkit.plugin.SimplePluginManager.loadPlugins(SimplePluginManager.java:230)
        at org.bukkit.craftbukkit.CraftServer.loadPlugins(CraftServer.java:207)
        at org.bukkit.craftbukkit.CraftServer.<init>(CraftServer.java:183)
        at net.minecraft.server.ServerConfigurationManager.<init>(ServerConfigurationManager.java:53)
        at net.minecraft.server.MinecraftServer.init(MinecraftServer.java:156)
        at net.minecraft.server.MinecraftServer.run(MinecraftServer.java:425)
        at net.minecraft.server.ThreadServerApplication.run(SourceFile:490)
    Caused by: java.lang.IllegalArgumentException: File cannot be null
        at org.bukkit.configuration.file.YamlConfiguration.loadConfiguration(YamlConfiguration.java:171)
        at org.bukkit.plugin.java.JavaPlugin.reloadConfig(JavaPlugin.java:117)
        at org.bukkit.plugin.java.JavaPlugin.getConfig(JavaPlugin.java:111)
        at de.bw2801.plugins.godlogin.Godlogin.<init>(Godlogin.java:17)
        at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
        at sun.reflect.NativeConstructorAccessorImpl.newInstance(Unknown Source)
        at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(Unknown Source)
        at java.lang.reflect.Constructor.newInstance(Unknown Source)
        at org.bukkit.plugin.java.JavaPluginLoader.loadPlugin(JavaPluginLoader.java:144)
        ... 8 more
    Main Class (Godlogin):
    Code:
    package de.bw2801.plugins.godlogin;
     
    import de.bw2801.plugins.godlogin.config.DefaultConfig;
    import de.bw2801.plugins.godlogin.config.PlayerConfig;
    //import java.util.Set;
    import org.bukkit.ChatColor;
    //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 Godlogin extends JavaPlugin implements Listener {
        private DefaultConfig defaultConfig;
        private PlayerConfig playerConfig;
        private HandleGod handleGod;
        private String prefix;
     
        public void onDisable() {
            System.out.println(this + " disabled!");
        }
     
        public void onEnable() {
            getServer().getPluginManager().registerEvents(this, this);
            defaultConfig.loadDefaultConfig();
            playerConfig.loadPlayerConfig();
    prefix = ChatColor.GRAY + getConfig().getString("config.messages.chat.prefix") + ChatColor.WHITE + " ";
     
            System.out.println(this + " enabled!");
        }
    }
    
    DefaultConfig:
    Code:
    package de.bw2801.plugins.godlogin.config;
     
    import de.bw2801.plugins.godlogin.Godlogin;
     
    public class DefaultConfig {
        private Godlogin plugin;
     
        public void loadDefaultConfig(){
            String path_00 = "config.first-login.enabled";
            plugin.getConfig().addDefault(path_00, true);
     
            String path_0 = "config.first-login.seconds";
            plugin.getConfig().addDefault(path_0, 900);
     
            String path_0_1 = "config.messages.chat.prefix";
            plugin.getConfig().addDefault(path_0_1, "[GodLogin]");
     
            plugin.getConfig().options().copyDefaults(true);
            plugin.saveConfig();
        }
    }
    
    PlayerConfig:
    Code:
    package de.bw2801.plugins.godlogin.config;
     
    import de.bw2801.plugins.godlogin.Godlogin;
    import java.io.File;
    import java.io.IOException;
    import java.io.InputStream;
    import java.util.logging.Level;
    import java.util.logging.Logger;
    import org.bukkit.configuration.file.FileConfiguration;
    import org.bukkit.configuration.file.YamlConfiguration;
    import org.bukkit.plugin.java.JavaPlugin;
     
    public class PlayerConfig {
        private Godlogin plugin;
     
        public void loadPlayerConfig(){
            String players = "players";
            getCustomConfig().addDefault(players, null);
     
            getCustomConfig().options().copyDefaults(true);
            saveCustomConfig();
        }
     
        private FileConfiguration playerConfig = null;
        private File playerFile = null;
     
        public void reloadCustomConfig() {
            if (playerFile == null) {
            playerFile = new File(plugin.getDataFolder(), "players.yml");
            }
            playerConfig = YamlConfiguration.loadConfiguration(playerFile);
     
            // Look for defaults in the jar
            InputStream defConfigStream = plugin.getResource("players.yml");
            if (defConfigStream != null) {
                YamlConfiguration defConfig = YamlConfiguration.loadConfiguration(defConfigStream);
                playerConfig.setDefaults(defConfig);
            }
        }
     
        public FileConfiguration getCustomConfig() {
            if (playerConfig == null) {
                reloadCustomConfig();
            }
            return playerConfig;
        }
     
        public void saveCustomConfig() {
            if (playerConfig == null || playerFile == null) {
                return;
            }
            try {
                playerConfig.save(playerFile);
            } catch (IOException ex) {
                Logger.getLogger(JavaPlugin.class.getName()).log(Level.SEVERE, "Could not save config to " + playerFile, ex);
            }
        }
    }
    
    But what is wrong here? Why did I get this error?
     
  2. Offline

    Njol

    You can't access the config before onEnable() is called. Set the variable in onEnable() (as well as all other variables that need information from the config).
     
  3. Ok, now I've got another error:
    Code:
    [SEVERE] Error occurred while enabling GodLogin v1.0 (Is it up to date?)
    java.lang.NullPointerException
        at de.bw2801.plugins.godlogin.Godlogin.onEnable(Godlogin.java:24)
        at org.bukkit.plugin.java.JavaPlugin.setEnabled(JavaPlugin.java:215)
        at org.bukkit.plugin.java.JavaPluginLoader.enablePlugin(JavaPluginLoader.java:336)
        at org.bukkit.plugin.SimplePluginManager.enablePlugin(SimplePluginManager.java:381)
        at org.bukkit.craftbukkit.CraftServer.loadPlugin(CraftServer.java:250)
        at org.bukkit.craftbukkit.CraftServer.enablePlugins(CraftServer.java:232)
        at org.bukkit.craftbukkit.CraftServer.reload(CraftServer.java:543)
        at org.bukkit.Bukkit.reload(Bukkit.java:182)
        at org.bukkit.command.defaults.ReloadCommand.execute(ReloadCommand.java:22)
        at org.bukkit.command.SimpleCommandMap.dispatch(SimpleCommandMap.java:166)
        at org.bukkit.craftbukkit.CraftServer.dispatchCommand(CraftServer.java:473)
        at org.bukkit.craftbukkit.CraftServer.dispatchServerCommand(CraftServer.java:469)
        at net.minecraft.server.MinecraftServer.b(MinecraftServer.java:599)
        at net.minecraft.server.MinecraftServer.w(MinecraftServer.java:568)
        at net.minecraft.server.MinecraftServer.run(MinecraftServer.java:452)
        at net.minecraft.server.ThreadServerApplication.run(SourceFile:490)
    My Code now:
    Code:
    private DefaultConfig defaultConfig;
        private PlayerConfig playerConfig;
        private HandleGod handleGod;
        private String prefix;
       
        public void onDisable() {
            System.out.println(this + " disabled!");
        }
     
        public void onEnable() {
            getServer().getPluginManager().registerEvents(this, this);
            defaultConfig.loadDefaultConfig();
            playerConfig.loadPlayerConfig();
            prefix = ChatColor.GRAY + getConfig().getString("config.messages.chat.prefix") + ChatColor.WHITE + " ";
           
            System.out.println(this + " enabled!");
        }
     
  4. Offline

    SirTyler

    My guess is your "config.messages.chat.prefix" is not getting pulled properly or its empty in the config, so its throwing an NPE cause its null.
     
  5. I should add, that Line 24 ist this one:
    Code:
    defaultConfig.loadDefaultConfig();
     
  6. Offline

    zwap1233

  7. Offline

    lixuan0303

    I should add, that Line 24 ist this one

    [​IMG]
     
Thread Status:
Not open for further replies.

Share This Page