2

我正在运行 Grails 1.3.7;我有需要在服务器 B 上发出 POST 请求的服务器 A。我正在使用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 正确执行计算,并向服务器 A 返回一个 JSON 结构。当服务器 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

已编辑http-builder库包含groovy-1.8.8.jar在其dependencies文件夹中,但我更愿意使用我的 Grails 运行时附带的标准 Groovy 库(v. 1.7.8)。不幸的是,groovy.json名称空间似乎不存在。我该怎么办?

4

1 回答 1

3

因为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 一起使用

于 2012-12-26T07:37:32.580 回答