4

これは以前は機能していました:

Eclipse 内から、(spock) モックまたはスタブを含む Spock 仕様を選択し、Run as -> JUnit Test を選択します。

突然、これらを実行できなくなりましたが、java.lang.VerifyError が発生しました。

モック/スタブなしで仕様を実行すると、期待どおりに動作し、Gradle ビルドから実行すると、これは発生しません。

これは、Eclipse 内からスタブを使用して Spec を実行したときに得られるスタック トレースです。

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.defineClassCond(ClassLoader.java:631)
at java.lang.ClassLoader.defineClass(ClassLoader.java:615)
at java.security.SecureClassLoader.defineClass(SecureClassLoader.java:141)
at java.net.URLClassLoader.defineClass(URLClassLoader.java:283)
at java.net.URLClassLoader.access$000(URLClassLoader.java:58)
at java.net.URLClassLoader$1.run(URLClassLoader.java:197)
at java.net.URLClassLoader.findClass(URLClassLoader.java:190)
at java.lang.ClassLoader.loadClass(ClassLoader.java:306)
at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:301)
at java.lang.ClassLoader.loadClass(ClassLoader.java:247)
at net.sf.cglib.core.AbstractClassGenerator.<init>(AbstractClassGenerator.java:38)
at net.sf.cglib.core.KeyFactory$Generator.<init>(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.<clinit>(Enhancer.java:69)
at org.spockframework.mock.runtime.ProxyBasedMockFactory$CglibMockFactory.createMock(ProxyBasedMockFactory.java:80)
at org.spockframework.mock.runtime.ProxyBasedMockFactory.create(ProxyBasedMockFactory.java:49)
at org.spockframework.mock.runtime.JavaMockFactory.create(JavaMockFactory.java:51)
at org.spockframework.mock.runtime.CompositeMockFactory.create(CompositeMockFactory.java:44)
at org.spockframework.lang.SpecInternals.createMock(SpecInternals.java:47)
at org.spockframework.lang.SpecInternals.createMockImpl(SpecInternals.java:282)
at org.spockframework.lang.SpecInternals.StubImpl(SpecInternals.java:131)
at se.hd.taglib.TaglibSpecBase.stubPageContext(TaglibSpecBase.groovy:43)

実行構成に引数を設定していません (以前は必要がなかったため) が、この問題を解決するために実行構成に設定できるランタイム変数または環境変数がおそらくありますか?

  • スポック: org.spockframework:spock-core:0.7-groovy-2.0
  • グルーヴィー:org.codehaus.groovy:groovy-all:2.0.6
  • Eclipse: Version: Juno Service Release 1 Build id: 20121004-1855, (jdk1.7.0_06.jdk で実行されますが、ソース レベルは 1.6 に設定されています)
  • Groovy-Eclipse プラグイン:2.7.1.xx-RELEASE-20121219-0800-e42
4

1 に答える 1

3

Eclipse クラス パスの CGLIB (または ASM) バージョンが間違っているようです。Spock 0.7 は に対してコンパイルされましたcglib:cglib-nodep:2.2.2

于 2013-02-01T10:36:18.190 に答える