我正在运行Grails 1.3.7;我有服务器A需要在服务器B上发出POST请求。我正在使用http-builder库来发出这些请求。该请求似乎正确组成
RESTClient http = new RESTClient( searchServerUrl );
Map body = ...;
logger.trace("request: ${request}, body: ${body}")
def response = http.post( path: request, body: body, requestContentType: URLENC)
logger.trace("response: ${response}");
return response;
服务器B正确执行计算,并将JSON结构返回给服务器A.当服务器A尝试解析它时,我看到一长串异常根植于此处:
Caused by: java.lang.NoClassDefFoundError: groovy/json/JsonSlurper
at groovyx.net.http.ParserRegistry.parseJSON(ParserRegistry.java:280)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:597)
at org.codehaus.groovy.reflection.CachedMethod.invoke(CachedMethod.java:90)
... 145 more
EDITED
http-builder
库在groovy-1.8.8.jar
文件夹中附带dependencies
,但我更愿意使用Grails运行时附带的标准Groovy库(v.1.7.8)。不幸的是,groovy.json
命名空间似乎并不存在。我该怎么办?
答案 0 :(得分:1)
因为http-builder-0.6基于Groovy 1.8.8,所以它假定JSONSlurper类可用于Groovy库。由于我使用的是Groovy 1.7.8附带的Grails版本,因此我没有该库。在此阶段,有两种选择:将应用程序升级到更新的grails版本,或者将http-builder库降级为显式包含JSON类的库。我选择了第二个解决方案(从Grails 1.3.7升级到2.2并非易事),并且能够让我的代码与http-builder-0.5.2一起使用。