Spout Screenlistener bug, plugin not loading

Discussion in 'Plugin Development' started by chuiby, Sep 16, 2011.

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

    chuiby

    I recently started a new plugin (an LWC addon)...
    And then when i tried to test it i couldn't get it to work...

    I use SpoutAPI & LWC API

    Code:
    Could not load      'plugins\LWCpp.jar' in folder 'plugins':
     java.lang.reflect.InvocationTargetException
     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:173)
     at      org.bukkit.plugin.SimplePluginManager.loadPlugin(SimplePluginManager.java:213)
     at      org.bukkit.plugin.SimplePluginManager.loadPlugins(SimplePluginManager.java:136)
     at      org.bukkit.craftbukkit.CraftServer.loadPlugins(CraftServer.java:143)
     at      org.bukkit.craftbukkit.CraftServer.<init>(CraftServer.java:110)
     at      net.minecraft.server.ServerConfigurationManager.<init>(ServerConfigurationManager.java:51)
     at      net.minecraft.server.MinecraftServer.init(MinecraftServer.java:133)
     at      net.minecraft.server.MinecraftServer.run(MinecraftServer.java:337)
     at      net.minecraft.server.ThreadServerApplication.run(SourceFile:422)
     Caused by: java.lang.NoClassDefFoundError:      org/getspout/spoutapi/event/screen/ScreenListener
     at java.lang.ClassLoader.defineClass1(Native      Method)
     at java.lang.ClassLoader.defineClassCond(Unknown      Source)
     at java.lang.ClassLoader.defineClass(Unknown      Source)
     at      java.security.SecureClassLoader.defineClass(Unknown Source)
     at java.net.URLClassLoader.defineClass(Unknown      Source)
     at java.net.URLClassLoader.access$000(Unknown      Source)
     at java.net.URLClassLoader$1.run(Unknown Source)
     at      java.security.AccessController.doPrivileged(Native Method)
     at java.net.URLClassLoader.findClass(Unknown      Source)
     at      org.bukkit.plugin.java.PluginClassLoader.findClass(PluginClassLoader.java:36)
     at      org.bukkit.plugin.java.PluginClassLoader.findClass(PluginClassLoader.java:24)
     at java.lang.ClassLoader.loadClass(Unknown      Source)
     at java.lang.ClassLoader.loadClass(Unknown      Source)
     at      me.chuiby.plugins.lwcpp.LWCpp.<init>(LWCpp.java:21)
     ... 13 more
     Caused by: java.lang.ClassNotFoundException:      org.getspout.spoutapi.event.screen.ScreenListener
     at java.net.URLClassLoader$1.run(Unknown Source)
     at      java.security.AccessController.doPrivileged(Native Method)
     at java.net.URLClassLoader.findClass(Unknown      Source)
     at      org.bukkit.plugin.java.PluginClassLoader.findClass(PluginClassLoader.java:36)
     at      org.bukkit.plugin.java.PluginClassLoader.findClass(PluginClassLoader.java:24)
     at java.lang.ClassLoader.loadClass(Unknown      Source)
     at java.lang.ClassLoader.loadClass(Unknown      Source)
     ... 27 more
    

    My main class:


    Show Spoiler

    Code:
    package me.chuiby.plugins.lwcpp;
    
    
    import java.util.logging.Level;
    import java.util.logging.Logger;
    
    
    import org.bukkit.event.Event;
    import org.bukkit.event.Event.Priority;
    import org.bukkit.plugin.Plugin;
    import org.bukkit.plugin.PluginDescriptionFile;
    import org.bukkit.plugin.PluginManager;
    import org.bukkit.plugin.java.JavaPlugin;
    
    
    import com.griefcraft.lwc.LWC;
    import com.griefcraft.lwc.LWCPlugin;
    
    
    public class LWCpp extends JavaPlugin{
    
    
    	Logger log = Logger.getLogger("Minecraft");
    	LWC lwc;
    	//LWCppScreenListener screenListener = new LWCppScreenListener(this);
    	LWCppPlayerListener playerListener = new LWCppPlayerListener(this);
    	public void onDisable() {
    		PluginDescriptionFile pdf = this.getDescription();
    		log.log(Level.INFO, pdf.getFullName() + " is now disabled !");
    	}
    
    
    	public void onEnable() {
    		PluginDescriptionFile pdf = this.getDescription();
    	    Plugin lwcPlugin = getServer().getPluginManager().getPlugin("LWC");
    		if(lwcPlugin != null) {
    		    lwc = ((LWCPlugin) lwcPlugin).getLWC();
    		}
    		log.log(Level.INFO, pdf.getFullName() + " is now enabled !");
    		PluginManager pm = this.getServer().getPluginManager();
    		pm.registerEvent(Event.Type.PLAYER_INTERACT, playerListener, Priority.Normal, this);
    		//pm.registerEvent(Event.Type.CUSTOM_EVENT, screenListener, Priority.Normal, this);
    	}
    	/*
    	@Override
        public boolean onCommand(CommandSender sender, Command command, String commandLabel, String[] args)
    	{
    	}*/
    }
    
    


    My bukkit.yml:
    Show Spoiler

    Code:
    name: LWCpp
    author: Chuiby
    version: '0.1'
    main: me.chuiby.plugins.lwcpp.LWCpp
    
    


    My LWCppScreenListener (Where the error seems to come from??):
    Show Spoiler

    Code:
    package me.chuiby.plugins.lwcpp;
    
    import org.getspout.spoutapi.event.screen.ButtonClickEvent;
    import org.getspout.spoutapi.event.screen.ScreenCloseEvent;
    import org.getspout.spoutapi.event.screen.ScreenListener;
    import org.getspout.spoutapi.event.screen.ScreenOpenEvent;
    import org.getspout.spoutapi.event.screen.SliderDragEvent;
    import org.getspout.spoutapi.event.screen.TextFieldChangeEvent;
    
    public class LWCppScreenListener extends ScreenListener{
    	static LWCpp plugin;
    	public LWCppScreenListener(LWCpp p)
    	{
    		plugin = p;
    	}
        @Override
        public void onScreenOpen(ScreenOpenEvent event) {
        }
        @Override
        public void onButtonClick(ButtonClickEvent event) {
        }
        @Override
        public void onSliderDrag(SliderDragEvent event) {
        }
        @Override
        public void onTextFieldChange(TextFieldChangeEvent event) {
        }
        @Override
        public void onScreenClose(ScreenCloseEvent event) {
        }
    }
    


    Help me please!
     
  2. Offline

    Afforess

    add "depend: [Spout]" to your bukkit.yml
     
  3. Offline

    chuiby

    Should i put depend: [Spout, LWC] since my plugins needs both to work?
     
  4. Offline

    Afforess

    Sure, you can
     
  5. Offline

    chuiby

    Okay thanks a lot :)
    I hope its gonna fix the problem.

    Thanks, runs fine now :)

    But i don't get how adding this line to my bukkit.yml fixes the whole thing?

    EDIT by Moderator: merged posts, please use the edit button instead of double posting.
     
    Last edited by a moderator: May 19, 2016
  6. Offline

    Afforess

    depend forces your plugin to load AFTER the plugins in the list. Yours was previously loading before Spout.
     
  7. Offline

    chuiby

    This explains everything, thanks again!

    Btw i really like spout, loads of awesome features
     
Thread Status:
Not open for further replies.

Share This Page