Cannot find main class?

Discussion in 'Plugin Help/Development/Requests' started by WishMachine, May 30, 2015.

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

    WishMachine

    console error (open)

    Code:
    [23:13:46] [Server thread/INFO]: Server permissions file permissions.yml is empty, ignoring it
    [23:13:46] [Server thread/INFO]: CONSOLE:  [0;32;1mReload complete. [m
    [23:16:19] [Server thread/INFO]: CONSOLE:  [0;31;1mPlease note that this command is not supported and may cause issues when using some plugins. [m
    [23:16:19] [Server thread/INFO]: CONSOLE:  [0;31;1mIf you encounter any issues please use the /stop command to restart your server. [m
    [23:16:19] [Server thread/ERROR]: Could not load 'plugins\Districts.jar' in folder 'plugins'
    org.bukkit.plugin.InvalidPluginException: Cannot find main class `me.WishMachine.Main'
        at org.bukkit.plugin.java.PluginClassLoader.<init>(PluginClassLoader.java:42) ~[craftbukkit.jar:git-Bukkit-0af2738]
        at org.bukkit.plugin.java.JavaPluginLoader.loadPlugin(JavaPluginLoader.java:129) ~[craftbukkit.jar:git-Bukkit-0af2738]
        at org.bukkit.plugin.SimplePluginManager.loadPlugin(SimplePluginManager.java:328) ~[craftbukkit.jar:git-Bukkit-0af2738]
        at org.bukkit.plugin.SimplePluginManager.loadPlugins(SimplePluginManager.java:251) [craftbukkit.jar:git-Bukkit-0af2738]
        at org.bukkit.craftbukkit.v1_8_R2.CraftServer.loadPlugins(CraftServer.java:288) [craftbukkit.jar:git-Bukkit-0af2738]
        at org.bukkit.craftbukkit.v1_8_R2.CraftServer.reload(CraftServer.java:723) [craftbukkit.jar:git-Bukkit-0af2738]
        at org.bukkit.Bukkit.reload(Bukkit.java:543) [craftbukkit.jar:git-Bukkit-0af2738]
        at org.bukkit.command.defaults.ReloadCommand.execute(ReloadCommand.java:25) [craftbukkit.jar:git-Bukkit-0af2738]
        at org.bukkit.command.SimpleCommandMap.dispatch(SimpleCommandMap.java:140) [craftbukkit.jar:git-Bukkit-0af2738]
        at org.bukkit.craftbukkit.v1_8_R2.CraftServer.dispatchCommand(CraftServer.java:625) [craftbukkit.jar:git-Bukkit-0af2738]
        at org.bukkit.craftbukkit.v1_8_R2.CraftServer.dispatchServerCommand(CraftServer.java:611) [craftbukkit.jar:git-Bukkit-0af2738]
        at net.minecraft.server.v1_8_R2.DedicatedServer.aN(DedicatedServer.java:372) [craftbukkit.jar:git-Bukkit-0af2738]
        at net.minecraft.server.v1_8_R2.DedicatedServer.A(DedicatedServer.java:337) [craftbukkit.jar:git-Bukkit-0af2738]
        at net.minecraft.server.v1_8_R2.MinecraftServer.z(MinecraftServer.java:626) [craftbukkit.jar:git-Bukkit-0af2738]
        at net.minecraft.server.v1_8_R2.MinecraftServer.run(MinecraftServer.java:534) [craftbukkit.jar:git-Bukkit-0af2738]
        at java.lang.Thread.run(Unknown Source) [?:1.8.0_40]
    Caused by: java.lang.ClassNotFoundException: me.WishMachine.Main
        at java.net.URLClassLoader.findClass(Unknown Source) ~[?:1.8.0_40]
        at org.bukkit.plugin.java.PluginClassLoader.findClass(PluginClassLoader.java:77) ~[craftbukkit.jar:git-Bukkit-0af2738]
        at org.bukkit.plugin.java.PluginClassLoader.findClass(PluginClassLoader.java:62) ~[craftbukkit.jar:git-Bukkit-0af2738]
        at java.lang.ClassLoader.loadClass(Unknown Source) ~[?:1.8.0_40]
        at java.lang.ClassLoader.loadClass(Unknown Source) ~[?:1.8.0_40]
        at java.lang.Class.forName0(Native Method) ~[?:1.8.0_40]
        at java.lang.Class.forName(Unknown Source) ~[?:1.8.0_40]
        at org.bukkit.plugin.java.PluginClassLoader.<init>(PluginClassLoader.java:40) ~[craftbukkit.jar:git-Bukkit-0af2738]
        ... 15 more
    


    my plugin.yml (open)

    Code:
    name: Districts
    main: me.WishMachine.Main
    author: WishMachine
    version: 1.0
    
    commands:
       join:
          description: /join <district>
          usage: /<command>


    the main code (open)

    Code:
    package me.WishMahcine;
    
    import java.util.ArrayList;
    import java.util.HashMap;
    import java.util.List;
    
    import org.bukkit.Bukkit;
    import org.bukkit.ChatColor;
    import org.bukkit.command.Command;
    import org.bukkit.command.CommandSender;
    import org.bukkit.entity.Player;
    import org.bukkit.event.EventHandler;
    import org.bukkit.event.Listener;
    import org.bukkit.event.block.BlockBreakEvent;
    import org.bukkit.event.player.PlayerLevelChangeEvent;
    import org.bukkit.event.player.PlayerLoginEvent;
    import org.bukkit.plugin.java.JavaPlugin;
    
    
    public class Districts extends JavaPlugin implements Listener {
      
        private ArrayList<String> miners     = new ArrayList<String>();
        private ArrayList<String> warriors     = new ArrayList<String>();
        private ArrayList<String> warlocks     = new ArrayList<String>();
      
        @Override
        public void onEnable() {
            Bukkit.getPluginManager().registerEvents(this, this);
            List<String> s = getConfig().getStringList("districts");
            int k=1;
          
            for (String str : s) {
                String[] words = str.split(":");
                switch (words[k]) {
                case "miner"     : miners.add(words[k-1]); break;
                case "warrior"     : warriors.add(words[k-1]); break;
                case "warlock"     : warlocks.add(words[k-1]); break;
                }
                k=+2;
            }
            saveDefaultConfig();      
        }
      
        @Override
        public void onDisable() {
            java.util.List<String> s = getConfig().getStringList("levels");      
            getConfig().set("levels", s);
            saveConfig();
        }
      
    
        HashMap<ArrayList<String>, Integer> map = new HashMap<>();
      
        static org.bukkit.Material i = org.bukkit.Material.IRON_ORE;
        static org.bukkit.Material g = org.bukkit.Material.GOLD_ORE;
        static org.bukkit.Material r = org.bukkit.Material.REDSTONE_ORE;
        static org.bukkit.Material l = org.bukkit.Material.LAPIS_ORE;
        static org.bukkit.Material d = org.bukkit.Material.DIAMOND_ORE;
        static org.bukkit.Material e = org.bukkit.Material.EMERALD_ORE;
      
        @EventHandler
        public static void onJoin(PlayerLoginEvent join) {
            Player player = join.getPlayer();
            player.sendMessage(ChatColor.GOLD + "CHOOSE YOUR DISTRICT" + ChatColor.BLUE + "/join Miner\n/join Warrior\n/join Warlock" + ChatColor.ITALIC);
            player.setPlayerListName(player.getDisplayName() + "   " + player.getLevel());
        }
      
        @EventHandler
        public static void onLvlChange(PlayerLevelChangeEvent lvl) {
            Player player = lvl.getPlayer();
            player.setPlayerListName(player.getDisplayName() + "   " + player.getLevel());
        }
      
        public boolean onCommand(CommandSender sender, Command cmd, String label, String[] args) {
            Player player = (Player) sender;
            java.util.List<String> s = getConfig().getStringList("levels");
    
            if (cmd.getName().equalsIgnoreCase("join") && sender instanceof Player) {
                if (args.length == 1) {
                    if (args[1] == "miner") {
                        //set spawn
                        if (miners.contains(player.getDisplayName()) == true) {
                            player.sendMessage(ChatColor.RED + "You are already in this district.");                      
                        }
                        else if (warriors.contains(player.getDisplayName()) == true) {
                            player.sendMessage(ChatColor.RED + "You are already in another district.");
                        }
                        else if (warlocks.contains(player.getDisplayName()) == true) {
                            player.sendMessage(ChatColor.RED + "You are already in another district.");
                        }                      
                        else {
                            miners.add(player.getDisplayName() + ":");
                            s.add(player.getDisplayName() + ":" + "miner");
                        }                  
                    }
                    if (args[1] == "warrior") {
                        //set spawn  
                        if (warriors.contains(player.getDisplayName()) == true) {
                            player.sendMessage(ChatColor.RED + "You are already in this district.");                      
                        }
                        else if (miners.contains(player.getDisplayName()) == true) {
                            player.sendMessage(ChatColor.RED + "You are already in another district.");                      
                        }
                        else if (warlocks.contains(player.getDisplayName()) == true) {
                            player.sendMessage(ChatColor.RED + "You are already in another district.");                      
                        }
                        else {
                            miners.add(player.getDisplayName());
                            s.add(player.getDisplayName() + ":" + "warrior");
                        }  
                    }
                    if (args[1] == "warlock") {
                        //set spawn  
                        if (warlocks.contains(player.getDisplayName()) == true) {
                            player.sendMessage(ChatColor.RED + "You are already in this district.");                      
                        }
                        else if (miners.contains(player.getDisplayName()) == true) {
                            player.sendMessage(ChatColor.RED + "You are already in another district.");                      
                        }
                        else if (warriors.contains(player.getDisplayName()) == true) {
                            player.sendMessage(ChatColor.RED + "You are already in another district.");
                        }
                        else {
                            miners.add(player.getDisplayName());
                            s.add(player.getDisplayName() + ":" + "warrior");
                        }  
                    }
                }
              
            }
            return false;      
        }
      
        public static void onBlockBreak(BlockBreakEvent bb) {
            int lvl = bb.getPlayer().getLevel();
            org.bukkit.Material x = bb.getBlock().getType();
          
            if ( x == i && lvl < 2 ) {
                bb.setCancelled(true);          
            }
            else if ( x == g && lvl < 4) {
                bb.setCancelled(true);
            }
            else if ( x == r && lvl < 8) {
                bb.setCancelled(true);
            }
            else if ( x == l && lvl < 12) {
                bb.setCancelled(true);
            }
            else if ( x == d && lvl < 16) {
                bb.setCancelled(true);
            }
            else if ( x == e && lvl < 30) {
                bb.setCancelled(true);
            }  
        }
      
    }


    The plugin.yml should be correct, this isn't the first time I have made one, and everything has been exported correctly, I see my main class in the java file and everything...? I have tried the fixes on other posts with similar errors but nothing is working and everything looks right to me, so I really need some help here

    Thanks in advance
     
  2. Offline

    Evaluations

    Your class is called Districts but you define it as Main in the plugin.yml.
     
  3. Offline

    mine-care

    a note:
    Please don't cast without checking : Player player =(Player) sender;
    See my signature.
     
  4. Moved to Bukkit Alternates.
     
Thread Status:
Not open for further replies.

Share This Page