0
votes

when i try to mock a spring service, i got verifyError. i have check spock version and groovy version, it's seens no problem. can somebody point me how to resovle this issue ? Thanks!

  • Spock version: spock-core-1.1-groovy-2.4-rc-3.jar
  • Groovy version: groovy-all-2.4.6.jar
  • Cglib version: cglib-nodep-3.2.4.jar

    java.lang.VerifyError: class net.sf.cglib.core.DebuggingClassWriter overrides final method visit.(IILjava/lang/String;Ljava/lang/String;Ljava/lang/String;[Ljava/lang/String;)V at java.lang.ClassLoader.defineClass(ClassLoader.java:763) at java.security.SecureClassLoader.defineClass(SecureClassLoader.java:142) at java.net.URLClassLoader.defineClass(URLClassLoader.java:467) at java.net.URLClassLoader.access$100(URLClassLoader.java:73) at java.net.URLClassLoader$1.run(URLClassLoader.java:368) at java.net.URLClassLoader$1.run(URLClassLoader.java:362) at java.net.URLClassLoader.findClass(URLClassLoader.java:361) at java.lang.ClassLoader.loadClass(ClassLoader.java:424) at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:331) at java.lang.ClassLoader.loadClass(ClassLoader.java:357) at net.sf.cglib.core.AbstractClassGenerator.(AbstractClassGenerator.java:38) at net.sf.cglib.core.KeyFactory$Generator.(KeyFactory.java:127) at net.sf.cglib.core.KeyFactory.create(KeyFactory.java:112) at net.sf.cglib.core.KeyFactory.create(KeyFactory.java:108) at net.sf.cglib.core.KeyFactory.create(KeyFactory.java:104) at net.sf.cglib.proxy.Enhancer.(Enhancer.java:69) at org.spockframework.mock.runtime.ProxyBasedMockFactory$CglibMockFactory.createMock(ProxyBasedMockFactory.java:144) at org.spockframework.mock.runtime.ProxyBasedMockFactory.create(ProxyBasedMockFactory.java:66) at org.spockframework.mock.runtime.JavaMockFactory.createInternal(JavaMockFactory.java:59) at org.spockframework.mock.runtime.JavaMockFactory.create(JavaMockFactory.java:40) at org.spockframework.mock.runtime.CompositeMockFactory.create(CompositeMockFactory.java:44) at org.spockframework.lang.SpecInternals.createMock(SpecInternals.java:45) at org.spockframework.lang.SpecInternals.createMockImpl(SpecInternals.java:281) at org.spockframework.lang.SpecInternals.MockImpl(SpecInternals.java:99) at com.example.apiimpl.query.UserAccountAuthQueryServiceSpec.setup(UserAccountAuthQueryServiceSpec.groovy:86)

1

1 Answers

1
votes

cglib is no longer actively maintained and it has some problems dealing with newer byte code. Spock is capable of using Byte Buddy for code generation if you use a newer version. Just put it on the class path for using it.