Found interface org.objectweb.asm.MethodVisitor, but class was expected


(George Papas) #1

Hi,

We have a java 1.6 project using spring and camel and are trying to use gradle 1.2 as our build tool. When running tests, via spock, we get the exception java.lang.IncompatibleClassChangeError: Found interface org.objectweb.asm.MethodVisitor, but class was expected

I’ve tried removing my build/ and .gradle directories, but with no luck

Any suggestions as to how to proceed with this. The unit test we have at the moment is simple and is not exercising any of the apache camel code.

Here is a gist to the dependency tree, gradle version output and failed test sample

https://gist.github.com/4063402

Thanks


(George Papas) #2

I should add that our tests are written in groovy. Also I’ve seen looking at the dependency tree generated by gradle dependencies, spring is brining in version 3.x of asm which from what I understand is not binary compatile with 4.x which is what gradle is now using.


(George Papas) #3

Ok,

Managed to work around this issue by ensuring the following:

use ‘groovy localGroovy()’

and include appropriate depedency on spock

‘testCompile “org.spockframework:spock-core:0.6-groovy-1.8”’

From what I can see this ensures the correct spock libraries for 1.8.6 groovy

Hope this helps somone else Cheers


(Peter Niederwieser) #4

You were using Groovy 2.0, which requires a newer version of ASM than some of your other libs (like Spring). To avoid such problems, always use ‘groovy-all’.


(George Papas) #5

thanks