将 REST 插件与 Grails Project 一起使用



我有grails应用程序,它在安装REST插件之前工作正常。安装后,我尝试运行我的应用程序,但由于以下原因运行失败。

| Loading Grails 2.0.3
| Configuring classpath.
| Environment set to development.....
| Packaging Grails application.....
| Error Error executing script RunApp: loader constraint violation: 
  loader (instance of <bootloader>) previously initiated loading for a different 
  type with name "org/w3c/dom/TypeInfo" (Use --stacktrace to see the full trace)

注意:我使用 grails 2.0.3 和 groovy 1.8.6 以及 eclipse spring source tool suite 2.9.1

我尝试grails> run-app --stacktrace

| Loading Grails 2.0.3
| Configuring classpath.
| Environment set to development.....
| Packaging Grails application.....
| Error Error executing script RunApp: loader constraint violation: 
  loader (instance of <bootloader>) previously initiated loading for a 
  different type with name "org/w3c/dom/TypeInfo" 
  (NOTE: Stack trace has been filtered. Use --verbose to see entire trace.)
java.lang.LinkageError: loader constraint violation: loader 
  (instance of <bootloader>) previously initiated loading for a different 
  type with name "org/w3c/dom/TypeInfo"
at com.springsource.loaded.ri.ReflectiveInterceptor.jlClassGetDeclaredMethods
  (ReflectiveInterceptor.java:123)
at com.springsource.loaded.ri.ReflectiveInterceptor.jlrMethodInvoke
  (ReflectiveInterceptor.java:1231)
at _GrailsPackage_groovy$_run_closure5_closure10.doCall
  (_GrailsPackage_groovy:121)
at com.springsource.loaded.ri.ReflectiveInterceptor.jlrMethodInvoke
  (ReflectiveInterceptor.java:1231)
at _GrailsPackage_groovy$_run_closure5_closure10.doCall
  (_GrailsPackage_groovy)
at com.springsource.loaded.ri.ReflectiveInterceptor.jlrMethodInvoke
  (ReflectiveInterceptor.java:1231)
at org.codehaus.gant.GantMetaClass.invokeMethod (GantMetaClass.java:133)
at _GrailsPackage_groovy$_run_closure5.doCall(_GrailsPackage_groovy:119)
at com.springsource.loaded.ri.ReflectiveInterceptor.jlrMethodInvoke
  (ReflectiveInterceptor.java:1231)
at org.codehaus.gant.GantMetaClass.invokeMethod(GantMetaClass.java:133)
at com.springsource.loaded.ri.ReflectiveInterceptor.jlrMethodInvoke
  (ReflectiveInterceptor.java:1231)
at org.codehaus.gant.GantMetaClass.invokeMethod(GantMetaClass.java:133)
at org.codehaus.gant.GantBinding$_initializeGantBinding_closure5_
   closure16_closure18.doCall(GantBinding.groovy:185)
at com.springsource.loaded.ri.ReflectiveInterceptor.
   jlrMethodInvoke(ReflectiveInterceptor.java:1231)
at org.codehaus.gant.GantBinding$_initializeGantBinding_closure5_
   closure16_closure18.doCall(GantBinding.groovy)
at com.springsource.loaded.ri.ReflectiveInterceptor.
   jlrMethodInvoke(ReflectiveInterceptor.java:1231)
at java_util_concurrent_Callable$call.call(Unknown Source)
at org.codehaus.gant.GantBinding.withTargetEvent(GantBinding.groovy:90)
at org.codehaus.gant.GantBinding.this$4$withTargetEvent(GantBinding.groovy)
at com.springsource.loaded.ri.ReflectiveInterceptor.
   jlrMethodInvoke(ReflectiveInterceptor.java:1231)
at org.codehaus.gant.GantBinding$_initializeGantBinding_closure5_
   closure16.doCall(GantBinding.groovy:185)
at com.springsource.loaded.ri.ReflectiveInterceptor.
   jlrMethodInvoke(ReflectiveInterceptor.java:1231)
at org.codehaus.gant.GantBinding$_initializeGantBinding_closure5_
   closure16.doCall(GantBinding.groovy)
at com.springsource.loaded.ri.ReflectiveInterceptor.
   jlrMethodInvoke(ReflectiveInterceptor.java:1231)
at org.codehaus.gant.GantMetaClass.invokeMethod(GantMetaClass.java:133)
at _GrailsPackage_groovy$_run_closure2.doCall(_GrailsPackage_groovy:61)
at com.springsource.loaded.ri.ReflectiveInterceptor.
   jlrMethodInvoke(ReflectiveInterceptor.java:1231)
at org.codehaus.gant.GantMetaClass.invokeMethod(GantMetaClass.java:133)
at com.springsource.loaded.ri.ReflectiveInterceptor.
   jlrMethodInvoke(ReflectiveInterceptor.java:1231)
at org.codehaus.gant.GantMetaClass.invokeMethod(GantMetaClass.java:133)
at org.codehaus.gant.GantBinding$_initializeGantBinding_closure5_
   closure16_closure18.doCall(GantBinding.groovy:185)
at com.springsource.loaded.ri.ReflectiveInterceptor.
   jlrMethodInvoke(ReflectiveInterceptor.java:1231)
at org.codehaus.gant.GantBinding$_initializeGantBinding_closure5_
   closure16_closure18.doCall(GantBinding.groovy)
at com.springsource.loaded.ri.ReflectiveInterceptor.
   jlrMethodInvoke(ReflectiveInterceptor.java:1231)
at java_util_concurrent_Callable$call.call(Unknown Source)
at org.codehaus.gant.GantBinding.withTargetEvent(GantBinding.groovy:90)
at org.codehaus.gant.GantBinding.this$4$withTargetEvent(GantBinding.groovy)
at com.springsource.loaded.ri.ReflectiveInterceptor.
   jlrMethodInvoke(ReflectiveInterceptor.java:1231)
at org.codehaus.gant.GantBinding$_initializeGantBinding_closure5_
   closure16.doCall(GantBinding.groovy:185)
at com.springsource.loaded.ri.ReflectiveInterceptor.
   jlrMethodInvoke(ReflectiveInterceptor.java:1231)
at org.codehaus.gant.GantBinding$_initializeGantBinding_closure5_
   closure16.doCall(GantBinding.groovy)
at com.springsource.loaded.ri.ReflectiveInterceptor.
   jlrMethodInvoke(ReflectiveInterceptor.java:1231)
at org.codehaus.gant.GantMetaClass.processClosure(GantMetaClass.java:81)
at org.codehaus.gant.GantMetaClass.processArgument(GantMetaClass.java:95)
at org.codehaus.gant.GantMetaClass.invokeMethod(GantMetaClass.java:128)
at RunApp$_run_closure1.doCall(RunApp.groovy:28)
at com.springsource.loaded.ri.ReflectiveInterceptor.
   jlrMethodInvoke(ReflectiveInterceptor.java:1231)
at org.codehaus.gant.GantMetaClass.invokeMethod(GantMetaClass.java:133)
at com.springsource.loaded.ri.ReflectiveInterceptor.
   jlrMethodInvoke(ReflectiveInterceptor.java:1231)
at org.codehaus.gant.GantMetaClass.invokeMethod(GantMetaClass.java:133)
at org.codehaus.gant.GantBinding$_initializeGantBinding_closure5_
   closure16_closure18.doCall(GantBinding.groovy:185)
at com.springsource.loaded.ri.ReflectiveInterceptor.
   jlrMethodInvoke(ReflectiveInterceptor.java:1231)
at org.codehaus.gant.GantBinding$_initializeGantBinding_closure5_c
   losure16_closure18.doCall(GantBinding.groovy)
at com.springsource.loaded.ri.ReflectiveInterceptor.
   jlrMethodInvoke(ReflectiveInterceptor.java:1231)
at java_util_concurrent_Callable$call.call(Unknown Source)
at org.codehaus.gant.GantBinding.withTargetEvent(GantBinding.groovy:90)
at org.codehaus.gant.GantBinding.this$4$withTargetEvent(GantBinding.groovy)
at com.springsource.loaded.ri.ReflectiveInterceptor.
   jlrMethodInvoke(ReflectiveInterceptor.java:1231)
at org.codehaus.gant.GantBinding$_initializeGantBinding_closure5_
   closure16.doCall(GantBinding.groovy:185)
at com.springsource.loaded.ri.ReflectiveInterceptor.
   jlrMethodInvoke(ReflectiveInterceptor.java:1231)
at org.codehaus.gant.GantBinding$_initializeGantBinding_closure5_
   closure16.doCall(GantBinding.groovy)
at com.springsource.loaded.ri.ReflectiveInterceptor.
   jlrMethodInvoke(ReflectiveInterceptor.java:1231)
at java_util_concurrent_Callable$call.call(Unknown Source)
at gant.Gant$_dispatch_closure5.doCall(Gant.groovy:381)
at com.springsource.loaded.ri.ReflectiveInterceptor.
   jlrMethodInvoke(ReflectiveInterceptor.java:1231)
at gant.Gant$_dispatch_closure7.doCall(Gant.groovy:415)
at com.springsource.loaded.ri.ReflectiveInterceptor.
   jlrMethodInvoke(ReflectiveInterceptor.java:1231)
at gant.Gant$_dispatch_closure7.doCall(Gant.groovy)
at com.springsource.loaded.ri.ReflectiveInterceptor.
   jlrMethodInvoke(ReflectiveInterceptor.java:1231)
at java_util_concurrent_Callable$call.call(Unknown Source)
at gant.Gant.withBuildListeners(Gant.groovy:427)
at gant.Gant.this$2$withBuildListeners(Gant.groovy)
at gant.Gant$this$2$withBuildListeners.callCurrent(Unknown Source)
at gant.Gant.dispatch(Gant.groovy:415)
at gant.Gant.this$2$dispatch(Gant.groovy) 
at com.springsource.loaded.ri.ReflectiveInterceptor.
   jlrMethodInvoke(ReflectiveInterceptor.java:1231)
at gant.Gant.invokeMethod(Gant.groovy)
at gant.Gant.executeTargets(Gant.groovy:591)
at com.springsource.loaded.ri.ReflectiveInterceptor.
   jlrMethodInvoke(ReflectiveInterceptor.java:1231)
at gant.Gant.executeTargets(Gant.groovy:590)
at com.springsource.loaded.ri.ReflectiveInterceptor.
   jlrMethodInvoke(ReflectiveInterceptor.java:1231)
| Error Error executing script RunApp: loader constraint violation: 
  loader (instance of <bootloader>) previously initiated loading for a 
  different type with name "org/w3c/dom/TypeInfo"

应用程序属性:

#Grails Metadata file
#Mon May 21 10:44:15 EEST 2012
app.grails.version=2.0.3
app.name= my-application
app.servlet.version=2.4
app.version=0.1
plugins.ckeditor=3.4.0.1
plugins.crypto=2.0
plugins.email-confirmation=1.0.4
plugins.excel-import=0.3
plugins.filter=0.2
plugins.filterpane=0.7
plugins.gsec=1.0
plugins.hibernate=2.0.3
plugins.mail=0.9
plugins.navigation=1.1.1
plugins.p6spy=0.5
plugins.quartz=0.4.2
plugins.rest=0.7
plugins.tomcat=2.0.3
plugins.webflow=2.0.0

有什么帮助吗?

注意:我尝试使用 REST 客户端生成器插件,但我不知道如何使用它以及如何发送 json 请求正文。 any one know?

很容易

使用 REST 客户端生成器插件,就像:

def test (String testName, String testDescription){
    def restBuilder = new RestBuilder()
    def restRequest = restBuilder.post(url){
        contentType "application/json"
        json {
            name = testName
            description = testDescription
        }
    }
    restRequest.json
}

1- 网址:是您要发布请求的网址

2-名称和描述:是您将在调用此方法的网络服务器中收到的参数的名称

注意:不要忘记安装 REST 客户端生成器插件并在您使用它的类中import grails.plugins.rest.client.RestBuilder

我也有类似的问题(尽管我只需要http-builder库而不是插件本身(。 -noreload选项并没有让它变得更好。

但是,正如它在这里指出的那样 http://jira.grails.org/browse/GPEXPORT-18?focusedCommentId=69307&page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel#comment-69307可以在 BuildConfig.groovy 中手动列出所有引用 xmlbeans 并明确排除 xmlbeans 的模块,例如

compile (group:'org.apache.poi', name:'poi', version:'3.7') {
  excludes 'xmlbeans'
}
compile (group:'org.apache.poi', name:'poi-ooxml', version:'3.7') {
  excludes 'xmlbeans'
}

这是Grails中的一个错误。弹簧加载,在Grails中实现类热重载的技术导致REST Client Build插件出现问题。

以下命令应该允许您使用该插件:

圣杯 -noreload 运行应用程序

最新更新