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


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


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.


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

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’.