使用grails项目的rest插件

时间:2012-05-22 07:05:34

标签: rest grails groovy rest-client

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

| 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"

application.properties:

#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 Client Builder Plugin,但我不知道如何使用它以及如何发送json请求体。 any one know?

3 个答案:

答案 0 :(得分:3)

使用REST Client Builder Plugin很容易:

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- url:是您要发布请求的网址

2- name&amp; description:您将在调用此方法的Web服务器中接收的参数的名称

注意:不要忘记在您使用它的课程中安装REST Client Builder Pluginimport grails.plugins.rest.client.RestBuilder

答案 1 :(得分:2)

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

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

  

grails -noreloading run-app

答案 2 :(得分:2)

我遇到了类似的问题(虽然我只需要http-builder库而不是插件本身)。 -noreloading选项并没有让它变得更好。

然而,正如它在此指出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'
}