【问题标题】:Where is groovy.json.JsonSlurper in groovy 1.7.8groovy 1.7.8 中的 groovy.json.JsonSlurper 在哪里
【发布时间】:2012-12-22 00:56:21
【问题描述】:

我正在运行 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 库在其 dependencies 文件夹中附带 groovy-1.8.8.jar,但我更愿意使用 Grails 运行时附带的标准 Groovy 库(v. 1.7.8)。不幸的是,groovy.json 命名空间似乎并不存在。我该怎么办?

【问题讨论】:

    标签: json grails httpbuilder


    【解决方案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 一起使用。

    【讨论】:

    • 你能提供第二个选项的解决方案吗?因为我无法确定我们如何在 http-builder 中显式添加 JsonSlurper。非常感谢您的帮助。谢谢!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-11-27
    • 1970-01-01
    • 1970-01-01
    • 2020-01-03
    相关资源
    最近更新 更多