【问题标题】:How to include simple-json in grails war builds如何在 grails 战争构建中包含 simple-json
【发布时间】:2013-02-12 19:16:32
【问题描述】:

我的 buildConfig 中有以下内容:

compile ":json-rest-api:1.0.11"

当我通过 Eclipse STS 查看我的类路径下的依赖项时,我可以看到 simple-json-1.1.jar 已包含在内。

当我为部署构建战争时,我发现它不包括这个 jar。 我在部署中需要它来测试推送通知。由于缺少该类,我目前收到当前错误:

2013-02-11 08:55:46,390 ERROR [STDERR] (Thread-85) org.codehaus.groovy.runtime.InvokerInvocationException: java.lang.NoClassDefFoundError: org/json/simple/parser/ParseException
2013-02-11 08:55:46,390 ERROR [STDERR] (Thread-85)      at org.codehaus.groovy.reflection.CachedMethod.invoke(CachedMethod.java:97)
2013-02-11 08:55:46,390 ERROR [STDERR] (Thread-85)      at groovy.lang.MetaMethod.doMethodInvoke(MetaMethod.java:233)
2013-02-11 08:55:46,390 ERROR [STDERR] (Thread-85)      at groovy.lang.MetaClassImpl.invokeMethod(MetaClassImpl.java:1047)
2013-02-11 08:55:46,390 ERROR [STDERR] (Thread-85)      at groovy.lang.ExpandoMetaClass.invokeMethod(ExpandoMetaClass.java:1110)
2013-02-11 08:55:46,390 ERROR [STDERR] (Thread-85)      at groovy.lang.MetaClassImpl.invokeMethod(MetaClassImpl.java:877)
2013-02-11 08:55:46,390 ERROR [STDERR] (Thread-85)      at groovy.lang.Closure.call(Closure.java:412)
2013-02-11 08:55:46,390 ERROR [STDERR] (Thread-85)      at groovy.lang.Closure.call(Closure.java:406)
2013-02-11 08:55:46,391 ERROR [STDERR] (Thread-85)      at groovy.lang.Closure.run(Closure.java:490)
2013-02-11 08:55:46,391 ERROR [STDERR] (Thread-85)      at java.lang.Thread.run(Thread.java:619)
2013-02-11 08:55:46,391 ERROR [STDERR] (Thread-85) Caused by: java.lang.NoClassDefFoundError: org/json/simple/parser/ParseException
2013-02-11 08:55:46,391 ERROR [STDERR] (Thread-85)      at java.lang.Class.forName0(Native Method)
2013-02-11 08:55:46,391 ERROR [STDERR] (Thread-85)      at java.lang.Class.forName(Class.java:169)
2013-02-11 08:55:46,391 ERROR [STDERR] (Thread-85)      at com.mysite.notification.AndroidNotificationService.class$(AndroidNotificationService.groovy)
2013-02-11 08:55:46,391 ERROR [STDERR] (Thread-85)      at com.mysite.notification.AndroidNotificationService.$get$$class$com$google$android$gcm$server$Sender(AndroidNotificationService.groovy)
2013-02-11 08:55:46,391 ERROR [STDERR] (Thread-85)      at com.mysite.notification.AndroidNotificationService.sendMessage(AndroidNotificationService.groovy:22)
2013-02-11 08:55:46,393 ERROR [STDERR] (Thread-85)      at com.mysite.notification.AndroidNotificationService$$FastClassByCGLIB$$5e8e3148.invoke(<generated>)

我需要在某处明确设置吗?它甚至是 json-rest-api 插件的依赖项吗?

谢谢

【问题讨论】:

  • 我会使用grails dependency-report 来确定它的来源。它似乎不是json-rest-api 的依赖项。如果它被证明是 build 范围内的某个东西的传递依赖,那么它不会卷入战争,你必须为此添加一个显式的 runtime 依赖。
  • 好的。 com.googlecode.json-simple 似乎是 json-simple。我目前在 buildConfig 中也有以下内容: dependencies { compile'org.apache.httpcomponents:httpclient:4.1.2' compile 'com.google.gcm:gcm:1.0' compile 'com.google.gcm:gcm-server:1.0 ' } 也许我需要添加?编译'org.json-simple:json-simple:1.1'

标签: grails grails-plugin


【解决方案1】:

所以在按照 Ian 的建议使用 grails dependency-report 之后,我发现它来自 com.googlecode.json-simple

我将以下内容添加到我的 buildConfig.groovy 中,并且在构建时它被正确拉入:

dependencies {      
        compile 'org.json-simple:json-simple:1.1.1'
}

【讨论】:

  • 是的,我还必须添加 com.googlecode.json-simple:repositories { grailsCentral() mavenCentral() } dependencies { compile 'com.googlecode.json-simple:json-simple:1.1.1' }
  • 我也必须按照@Tak 的建议去做。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2023-04-10
  • 1970-01-01
  • 2013-11-17
  • 1970-01-01
  • 2016-09-01
  • 2013-10-04
相关资源
最近更新 更多