Grails2.0.4アプリケーションで次のスタックトレースを取得します。
java.lang.ArrayIndexOutOfBoundsException: 6170
at com.springsource.loaded.NameRegistry.getIdFor(NameRegistry.java:44)
at com.springsource.loaded.NameRegistry.getIdOrAllocateFor(NameRegistry.java:59)
at com.springsource.loaded.TypeRegistry.getTypeIdFor(TypeRegistry.java:756)
at com.springsource.loaded.MethodInvokerRewriter$RewriteClassAdaptor$RewritingMethodAdapter.rewritePUTSTATIC(MethodInvokerRewriter.java:789)
at com.springsource.loaded.MethodInvokerRewriter$RewriteClassAdaptor$RewritingMethodAdapter.visitFieldInsn(MethodInvokerRewriter.java:708)
at sl.org.objectweb.asm.ClassReader.accept(Unknown Source)
at sl.org.objectweb.asm.ClassReader.accept(Unknown Source)
at com.springsource.loaded.MethodInvokerRewriter.rewrite(MethodInvokerRewriter.java:280)
at com.springsource.loaded.MethodInvokerRewriter.rewrite(MethodInvokerRewriter.java:83)
at com.springsource.loaded.TypeRegistry.methodCallRewrite(TypeRegistry.java:767)
at com.springsource.loaded.agent.ModifyDefineInClassLoaderForClassArtifactsType.modify(ModifyDefineInClassLoaderForClassArtifactsType.java:77)
at org.codehaus.groovy.reflection.ClassLoaderForClassArtifacts.define(ClassLoaderForClassArtifacts.java)
at org.codehaus.groovy.reflection.ClassLoaderForClassArtifacts$1.run(ClassLoaderForClassArtifacts.java:86)
at org.codehaus.groovy.reflection.ClassLoaderForClassArtifacts$1.run(ClassLoaderForClassArtifacts.java:84)
at java.security.AccessController.doPrivileged(Native Method)
at org.codehaus.groovy.reflection.ClassLoaderForClassArtifacts.defineClassAndGetConstructor(ClassLoaderForClassArtifacts.java:84)
at org.codehaus.groovy.runtime.callsite.CallSiteGenerator.compilePogoMethod(CallSiteGenerator.java:217)
at org.codehaus.groovy.reflection.CachedMethod.createPogoMetaMethodSite(CachedMethod.java:228)
at org.codehaus.groovy.runtime.callsite.PogoMetaMethodSite.createCachedMethodSite(PogoMetaMethodSite.java:207)
at org.codehaus.groovy.runtime.callsite.PogoMetaMethodSite.createPogoMetaMethodSite(PogoMetaMethodSite.java:183)
at groovy.lang.MetaClassImpl.createPogoCallCurrentSite(MetaClassImpl.java:3022)
at org.codehaus.groovy.runtime.callsite.CallSiteArray.createCallCurrentSite(CallSiteArray.java:95)
at org.codehaus.groovy.runtime.callsite.CallSiteArray.defaultCallCurrent(CallSiteArray.java:46)
at org.codehaus.groovy.runtime.callsite.AbstractCallSite.callCurrent(AbstractCallSite.java:133)
at org.codehaus.groovy.runtime.callsite.AbstractCallSite.callCurrent(AbstractCallSite.java:145)
< actual call site in my code, some method call to the same service the original method is in>
どうやら私のグーグルフーは私を失ったか、誰もこれまでその問題を抱えたことはありません。検索するだけcom.springsource.loaded.NameRegistry
でも結果は得られません。
通常、同じ操作を数回試行すると問題は解決しますが、それで解決することはほとんどありません。私が探すことができるものについてのヒントはありますか?
私の大げさな推測では、Springは私が呼び出そうとしているメソッドをプロキシしていて、どういうわけかそれを独自のレジストリで検索できません。どうしてそれが私のせいなのか?
foo
編集:これを引き起こすスタックトレースの最初の行は、次のメソッドの呼び出しのように、無害なメソッド呼び出しbar
です。
class FooService {
def foo(bla, bloerk) {
1
}
def bar() {
foo(1,2)
}
}