[json-lib-user] StringMetaClass Problem
Brought to you by:
aalmiray
From: Andrew S. <str...@gm...> - 2008-01-07 17:09:43
|
Hello, I'm having a problem using the JsonGroovyBuilder. I'm using Json-lib 2.2and Groovy 1.5.1, they are declared in my POM like so: <dependency> <groupId>net.sf.json-lib</groupId> <artifactId>json-lib</artifactId> <version>2.2</version> <classifier>jdk15</classifier> </dependency> <dependency> <groupId>org.codehaus.groovy</groupId> <artifactId>groovy-all</artifactId> <version>1.5.1</version> </dependency> Here's the snippet from my groovy script where I try to do the json creation: def builder = new JsonGroovyBuilder(); if (searchResponse != null) { def orders = builder.orders{ for(ord in ords){ order{ tsrNumber = ord.getTsrNumber() tsoNumber = ord.getTsrNumber() ccsd = ord.getCcsdNumber() status = ord.getStatus() } } } } I get the following exception: ERROR [Groovy] - Servlet.service() for servlet Groovy threw exception java.lang.NoSuchMethodException: groovy.runtime.metaclass.java.lang.StringMetaCl ass.<init>(groovy.lang.MetaClassRegistry, java.lang.Class) at java.lang.Class.getConstructor0(Unknown Source) at java.lang.Class.getConstructor(Unknown Source) at groovy.lang.MetaClassRegistry.getMetaClassFor( MetaClassRegistry.java: 205) at groovy.lang.MetaClassRegistry.getMetaClass(MetaClassRegistry.java :135 ) at org.codehaus.groovy.runtime.Invoker.invokeMethod(Invoker.java :118) at org.codehaus.groovy.runtime.InvokerHelper.invokeMethod (InvokerHelper. java:111) at org.codehaus.groovy.runtime.ScriptBytecodeAdapter.invokeMethodN (Scrip tBytecodeAdapter.java:187) at org.codehaus.groovy.runtime.ScriptBytecodeAdapter.isCase (ScriptByteco deAdapter.java:715) at proxy.proxy(proxy.groovy:27) at gjdk.proxy_GroovyReflector.invoke(Unknown Source) at groovy.lang.MetaMethod.invoke(MetaMethod.java:115) at org.codehaus.groovy.runtime.MetaClassHelper.doMethodInvoke (MetaClassH elper.java:713) at groovy.lang.MetaClassImpl.invokeMethod(MetaClassImpl.java:560) at org.codehaus.groovy.runtime.ScriptBytecodeAdapter.invokeMethodOnCurre ntN(ScriptBytecodeAdapter.java:97) at org.codehaus.groovy.runtime.ScriptBytecodeAdapter.invokeMethodOnCurre nt0(ScriptBytecodeAdapter.java:129) at proxy.run(proxy.groovy:15) at groovy.util.GroovyScriptEngine.run(GroovyScriptEngine.java:378) at groovy.servlet.GroovyServlet$1.call(GroovyServlet.java:135) at org.codehaus.groovy.runtime.GroovyCategorySupport.use (GroovyCategoryS upport.java:149) at groovy.servlet.GroovyServlet.service(GroovyServlet.java:144) at javax.servlet.http.HttpServlet.service(HttpServlet.java:803) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter (Appl icationFilterChain.java:269) at org.apache.catalina.core.ApplicationFilterChain.doFilter (ApplicationF ilterChain.java:188) at org.apache.catalina.core.StandardWrapperValve.invoke (StandardWrapperV alve.java:213) at org.apache.catalina.core.StandardContextValve.invoke (StandardContextV alve.java:174) at org.apache.catalina.core.StandardHostValve.invoke( StandardHostValve.j ava:127) at org.apache.catalina.valves.ErrorReportValve.invoke( ErrorReportValve.j ava:117) at org.apache.catalina.core.StandardEngineValve.invoke (StandardEngineVal ve.java:108) at org.apache.catalina.connector.CoyoteAdapter.service( CoyoteAdapter.jav a:151) at org.apache.coyote.http11.Http11Processor.process( Http11Processor.java :874) at org.apache.coyote.http11.Http11BaseProtocol$Http11ConnectionHandler.p rocessConnection(Http11BaseProtocol.java:665) at org.apache.tomcat.util.net.PoolTcpEndpoint.processSocket (PoolTcpEndpo int.java:528) at org.apache.tomcat.util.net.LeaderFollowerWorkerThread.runIt (LeaderFol lowerWorkerThread.java:81) at org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run (ThreadP ool.java:689) at java.lang.Thread.run(Unknown Source) I checked the json-lib source browser for StringMetaClass and noticed a difference between revision 1.1 and 1.2, you can see it here: http://json-lib.cvs.sourceforge.net/json-lib/json-lib/src/main/groovy/groovy/runtime/metaclass/java/lang/StringMetaClass.groovy?r1=1.1&r2=1.2. Notice that the constructor that took a MetaClassRegistry and Class is now gone...and that appears to be the constructor that Groovy is trying to instantiate. Anyone have any idea why this is happening, if there is a fix for it, or how I can get around it? |