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.

Reply via email to