Solved Abnormal plugin type

Discussion in 'Plugin Development' started by mrgreen33gamer, Aug 27, 2015.

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

    mrgreen33gamer

    Hi there,

    So I have a bigger plugin but I created a smaller one just to check and see if it wasn't my classes, and I found out that it wasn't my plugin. Anyway, I'm trying to prevent from using statics as much as possible. I get the error in console:

    Code:
    28.08 01:48:42 [Server] INFO ... 22 more
    28.08 01:48:42 [Server] INFO at org.bukkit.plugin.java.PluginClassLoader.<init>(PluginClassLoader.java:76) ~[custom.jar:git-Spigot-6d16e64-b105298]
    28.08 01:48:42 [Server] INFO at java.lang.Class.newInstance(Class.java:403) ~[?:1.8.0_11]
    28.08 01:48:42 [Server] INFO at java.lang.Class.getConstructor0(Class.java:2971) ~[?:1.8.0_11]
    28.08 01:48:42 [Server] INFO Caused by: java.lang.NoSuchMethodException: com.mrgreen33gamer.test.Main.<init>()
    28.08 01:48:42 [Server] INFO ... 22 more
    28.08 01:48:42 [Server] INFO at org.bukkit.plugin.java.PluginClassLoader.<init>(PluginClassLoader.java:76) ~[custom.jar:git-Spigot-6d16e64-b105298]
    28.08 01:48:42 [Server] INFO at java.lang.Class.newInstance(Class.java:418) ~[?:1.8.0_11]
    28.08 01:48:42 [Server] INFO Caused by: java.lang.InstantiationException: com.mrgreen33gamer.test.Main
    28.08 01:48:42 [Server] INFO at java.lang.Thread.run(Thread.java:745) [?:1.8.0_11]
    28.08 01:48:42 [Server] INFO at net.minecraft.server.v1_8_R3.MinecraftServer.run(MinecraftServer.java:556) [custom.jar:git-Spigot-6d16e64-b105298]
    28.08 01:48:42 [Server] INFO at net.minecraft.server.v1_8_R3.MinecraftServer.A(MinecraftServer.java:653) [custom.jar:git-Spigot-6d16e64-b105298]
    28.08 01:48:42 [Server] INFO at net.minecraft.server.v1_8_R3.DedicatedServer.B(DedicatedServer.java:374) [custom.jar:git-Spigot-6d16e64-b105298]
    28.08 01:48:42 [Server] INFO at net.minecraft.server.v1_8_R3.MinecraftServer.B(MinecraftServer.java:714) [custom.jar:git-Spigot-6d16e64-b105298]
    28.08 01:48:42 [Server] INFO at net.minecraft.server.v1_8_R3.SystemUtils.a(SystemUtils.java:19) [custom.jar:git-Spigot-6d16e64-b105298]
    28.08 01:48:42 [Server] INFO at java.util.concurrent.FutureTask.run(FutureTask.java:266) [?:1.8.0_11]
    28.08 01:48:42 [Server] INFO at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511) [?:1.8.0_11]
    28.08 01:48:42 [Server] INFO at net.minecraft.server.v1_8_R3.PlayerConnectionUtils$1.run(SourceFile:13) [custom.jar:git-Spigot-6d16e64-b105298]
    28.08 01:48:42 [Server] INFO at net.minecraft.server.v1_8_R3.PacketPlayInChat.a(PacketPlayInChat.java:1) [custom.jar:git-Spigot-6d16e64-b105298]
    28.08 01:48:42 [Server] INFO at net.minecraft.server.v1_8_R3.PacketPlayInChat.a(PacketPlayInChat.java:45) [custom.jar:git-Spigot-6d16e64-b105298]
    28.08 01:48:42 [Server] INFO at net.minecraft.server.v1_8_R3.PlayerConnection.a(PlayerConnection.java:970) [custom.jar:git-Spigot-6d16e64-b105298]
    28.08 01:48:42 [Server] INFO at net.minecraft.server.v1_8_R3.PlayerConnection.handleCommand(PlayerConnection.java:1135) [custom.jar:git-Spigot-6d16e64-b105298]
    28.08 01:48:42 [Server] INFO at org.bukkit.craftbukkit.v1_8_R3.CraftServer.dispatchCommand(CraftServer.java:640) [custom.jar:git-Spigot-6d16e64-b105298]
    28.08 01:48:42 [Server] INFO at org.bukkit.command.SimpleCommandMap.dispatch(SimpleCommandMap.java:141) [custom.jar:git-Spigot-6d16e64-b105298]
    28.08 01:48:42 [Server] INFO at org.bukkit.command.defaults.ReloadCommand.execute(ReloadCommand.java:25) [custom.jar:git-Spigot-6d16e64-b105298]
    28.08 01:48:42 [Server] INFO at org.bukkit.Bukkit.reload(Bukkit.java:534) [custom.jar:git-Spigot-6d16e64-b105298]
    28.08 01:48:42 [Server] INFO at org.bukkit.craftbukkit.v1_8_R3.CraftServer.reload(CraftServer.java:738) [custom.jar:git-Spigot-6d16e64-b105298]
    28.08 01:48:42 [Server] INFO at org.bukkit.craftbukkit.v1_8_R3.CraftServer.loadPlugins(CraftServer.java:291) [custom.jar:git-Spigot-6d16e64-b105298]
    28.08 01:48:42 [Server] INFO at org.bukkit.plugin.SimplePluginManager.loadPlugins(SimplePluginManager.java:251) [custom.jar:git-Spigot-6d16e64-b105298]
    28.08 01:48:42 [Server] INFO at org.bukkit.plugin.SimplePluginManager.loadPlugin(SimplePluginManager.java:329) ~[custom.jar:git-Spigot-6d16e64-b105298]
    28.08 01:48:42 [Server] INFO at org.bukkit.plugin.java.JavaPluginLoader.loadPlugin(JavaPluginLoader.java:131) ~[custom.jar:git-Spigot-6d16e64-b105298]
    28.08 01:48:42 [Server] INFO at org.bukkit.plugin.java.PluginClassLoader.<init>(PluginClassLoader.java:80) ~[custom.jar:git-Spigot-6d16e64-b105298]
    28.08 01:48:42 [Server] INFO org.bukkit.plugin.InvalidPluginException: Abnormal plugin type
    28.08 01:48:42 [Server] Server thread/ERROR Could not load 'plugins/Test.jar' in folder 'plugins'
    
    Also here is my 2 classes:

    Main.class:
    Code:java
    1.  
    2. package com.mrgreen33gamer.test;
    3.  
    4. import org.bukkit.command.Command;
    5. import org.bukkit.command.CommandSender;
    6. import org.bukkit.plugin.java.JavaPlugin;
    7.  
    8. public class Main extends JavaPlugin {
    9.  
    10. public Main plugin;
    11. private References abb;
    12.  
    13. public Main(References instance2){
    14. this.abb = instance2;
    15. }
    16.  
    17. @Override
    18. public void onEnable(){
    19. plugin = this;
    20. }
    21.  
    22. @Override
    23. public void onDisable(){
    24.  
    25. }
    26.  
    27. public boolean onCommand(CommandSender sender, Command cmd, String lbl, String[] args){
    28. if(lbl.equalsIgnoreCase("egg")){
    29. sender.sendMessage("The message was: " + abb.setIt());
    30. }
    31. return false;
    32. }
    33.  
    34. }
    35.  
    36.  

    Refereance.class:
    Code:java
    1.  
    2. package com.mrgreen33gamer.test;
    3.  
    4. public class References {
    5.  
    6. public String setIt() {
    7. return "Hi there fool!";
    8. }
    9.  
    10. }
    11.  
    12.  


    I don't see what I'm doing wrong. I remove
    Code:
        public Main(References instance2){
            this.abb = instance2;
        }
    
    and everything works perfectly.

    Any ideas? Thanks!

    ~mrgreen33gamer | Josh
     
  2. Offline

    au2001

    @mrgreen33gamer Bukkit uses the constructor Main#Main() (without any argument)
    In Java, if you create a constructor with any argument, the one with no argument will "disappear".

    Anyway, if you create a new instance of a class that extends a JavaPlugin, it will throw the error "plugin already initialized" or something like that.

    You must change your constructor to a Main#getInstance(References) for exemple.
     
  3. You can't just add your constructor to the main class, because the ClassLoader of bukkit doesn't work like that (I guess)
    Normally you create all new instances of your classes in onEnable (and store them in a local variable)
     
    mrgreen33gamer likes this.
  4. Offline

    au2001

  5. Offline

    mrgreen33gamer


    Yeah I solved it, that's a good point. I followed a tutorials so I had no experience on my issue what so ever. Now I got it :D! Solved. Thanks for reply

    @au2001 Cool

    EDIT: If anyone is looking to solve an issue similar to mine, here is an example class:

    Main Class:
    Code:java
    1.  
    2. package com.mrgreen33gamer.test;
    3.  
    4. import org.bukkit.command.Command;
    5. import org.bukkit.command.CommandSender;
    6. import org.bukkit.plugin.java.JavaPlugin;
    7.  
    8. public class Main extends JavaPlugin {
    9.  
    10. public Main plugin;
    11. private References abb;
    12.  
    13. @Override
    14. public void onEnable(){
    15. plugin = this;
    16. abb = new References();
    17. }
    18.  
    19. public boolean onCommand(CommandSender sender, Command cmd, String lbl, String[] args){
    20. if(lbl.equalsIgnoreCase("egg")){
    21. sender.sendMessage("The message was: " + abb.setIt());
    22. }
    23. return false;
    24. }
    25.  
    26. }
    27.  
    28.  


    Reference Class:

    Code:java
    1.  
    2. package com.mrgreen33gamer.test;
    3.  
    4. public class References {
    5.  
    6. public String setIt() {
    7. return "Hi there fool!";
    8. }
    9.  
    10. }
    11.  
    12.  
     
    Last edited: Aug 28, 2015
Thread Status:
Not open for further replies.

Share This Page