And, finally figured it out. As I said I was using the 020 branch of graylog2-plugin-interfaces project, which is turns out is not the correct thing to do. I finally noticed the graylog2-plugin-interfaces module in the graylog2-server project and found that the API has changed drastically, including changing MessageInput from an interface to and abstract class (which is specifically what was causing the runtime error).
I think it would be a good idea to put a big warning on the graylog2-plugin-interfaces Github project that it is definitely *not* the right thing to use for developing plugins. Might save the next person some time and headaches. Cheers, Craig On Monday, February 24, 2014 4:12:08 PM UTC-5, Craig Blake wrote: > > New development - I grabbed the new 0.20.1 release and tried the plugin > again. Now the error is gone at startup, but the plugin does not show up > under the "inputs" in the web interface. Is there anything I can do to > check that it was loaded correctly, or any configuration required to make > it visible? > > Thanks, > Craig > > On Monday, February 24, 2014 11:11:22 AM UTC-5, Kay Röpke wrote: >> >> Indeed, we will be taking a hard look at the plugin structure in the next >> version 0.21, including dependency injection. >> The error message is annoying, that's true, you could try to set a >> breakpoint there and dump the class name it was looking up, I remember that >> being a pain. >> >> This >> https://github.com/Graylog2/graylog2-server/commit/411e87f7c2dfc764efa4f4717b3d12a997c9afebwas >> the "solution" when I hit it. >> I believe jersey 2.6 has fixed that by shading the asm dependency, so we >> could possibly get rid of the work around in the next version again, but I >> need to verify that. >> One thing you could try as well is to update the Kafka dependency, I >> believe it is out of the beta which we are still having in there. >> Hopefully that fixes the messed up pom it shipped with. >> >> Best, >> Kay >> >> On Monday, February 24, 2014 3:58:28 PM UTC+1, Craig Blake wrote: >>> >>> Thanks for the reply! There are unfortunately a ton of things the >>> plugin uses which are bundled with the Graylog server, including Kafka, >>> which I thought might be causing the trouble. So, I went through package >>> by package and removed everything from the plugin jar that was already >>> present in the Graylog server jar which only leaves classes for jline, >>> HdrHistogram and my own classes. I've verified none of those packages >>> exist in the Graylog server jar so there should be no conflicts, yet the >>> same exception pops up. >>> >>> Unfortunately the plugin cannot be shared, it's an internal corporate >>> project. >>> >>> Seems like Graylog could benefit from using a separate classloading >>> context per plugin, similar to the webapp classloaders in J2EE containers. >>> Hard to say if that would help with my case, though, since the stack trace >>> is not particularly enlightening. >>> >>> Cheers, >>> Craig >>> >>> On Monday, February 24, 2014 9:23:35 AM UTC-5, Kay Röpke wrote: >>>> >>>> Hi! >>>> >>>> Which maven dependencies does your plugin have? >>>> I've seen this happening when something pulls in a different version of >>>> asm, one of the interfaces has changed into a abstract class, leading to >>>> this error. >>>> we had to exclude it at some point. >>>> >>>> Is your plugin open source? If so I could take a look. >>>> >>>> cheers, >>>> -k >>>> >>>> On Monday, February 24, 2014 3:17:42 PM UTC+1, Craig Blake wrote: >>>>> >>>>> Forgot to mention that I'm running the 0.20.0 release of the server. >>>>> >>>>> On Monday, February 24, 2014 9:17:16 AM UTC-5, Craig Blake wrote: >>>>>> >>>>>> Hi, I've put together a test plugin using the 020 branch of >>>>>> graylog2-plugin-interfaces but I'm getting an error at startup time in >>>>>> the >>>>>> server: >>>>>> >>>>>> Exception in thread "main" java.lang.IncompatibleClassChangeError: >>>>>> Implementing class >>>>>> at java.lang.ClassLoader.defineClass1(Native Method) >>>>>> at java.lang.ClassLoader.defineClass(ClassLoader.java:791) >>>>>> at >>>>>> java.security.SecureClassLoader.defineClass(SecureClassLoader.java:142) >>>>>> at java.net.URLClassLoader.defineClass(URLClassLoader.java:449) >>>>>> at java.net.URLClassLoader.access$100(URLClassLoader.java:71) >>>>>> at java.net.URLClassLoader$1.run(URLClassLoader.java:361) >>>>>> at java.net.URLClassLoader$1.run(URLClassLoader.java:355) >>>>>> at java.security.AccessController.doPrivileged(Native Method) >>>>>> at java.net.URLClassLoader.findClass(URLClassLoader.java:354) >>>>>> at java.lang.ClassLoader.loadClass(ClassLoader.java:423) >>>>>> at java.net.FactoryURLClassLoader.loadClass(URLClassLoader.java:789) >>>>>> at java.lang.ClassLoader.loadClass(ClassLoader.java:356) >>>>>> at java.lang.Class.forName0(Native Method) >>>>>> at java.lang.Class.forName(Class.java:266) >>>>>> at org.graylog2.plugins.PluginLoader.getPlugins(PluginLoader.java:61) >>>>>> at org.graylog2.Core.registerPlugins(Core.java:434) >>>>>> at org.graylog2.Core.run(Core.java:292) >>>>>> at org.graylog2.Main.main(Main.java:266) >>>>>> >>>>>> Normally I would expect that message to indicate the offending class, >>>>>> but for some reason it's empty here. Has anyone come across this >>>>>> before, >>>>>> and if so found a solution? >>>>>> >>>>>> Thanks, >>>>>> Craig >>>>>> >>>>> -- You received this message because you are subscribed to the Google Groups "graylog2" group. To unsubscribe from this group and stop receiving emails from it, send an email to [email protected]. For more options, visit https://groups.google.com/groups/opt_out.
