我正在运行 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 正确执行计算,并向服务器 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
库在其 dependencies
文件夹中附带了 groovy-1.8.8.jar
,但我宁愿使用标准 Groovy 库( v. 1.7.8) 是我的 Grails 运行时附带的。不幸的是,groovy.json 命名空间似乎不存在。我该怎么办?
最佳答案
因为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 一起使用。 .
关于json - groovy.json.JsonSlurper 在 groovy 1.7.8 中在哪里,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13999081/