我正在使用Grails / Groovy,并使用groovy-wslite进行一些直接的Groovy代码。该代码就是这样开始的
发送-request.groovy
@Grab(group='com.github.groovy-wslite', module='groovy-wslite', version='1.1.0')
import wslite.soap.*
当我将其实现到我的Grails代码中并查看控制器/操作时,我得到了这个
Error 500: Internal Server Error
URI: /FormProj/hello/trigger
Class: java.lang.RuntimeException
Message: No suitable ClassLoader found for grab
这里的代码是当前的状态(我已经尝试了很多不同的东西)
HelloController.groovy
package com.demo
import groovy.grape.Grape
class HelloController {
def index() { }
def sayHi() {
return [
greeting : "Hi there, ${ params.name }"
]
}
def trigger() {
Grape.grab(group:'com.github.groovy-wslite', module:'groovy-wslite', version:'1.1.0')
…
}
}
我确定你注意到我对Grails / Groovy非常环保,而且所有的东西都是Java。我知道有一个用于Grails的wslite插件,但肯定这可以正常工作吗?
Grails:2.3.8
Groovy:2.2.2
更新
根据Ian Robert的建议,我已通过将此行添加到BuildConfig
块来更新我的dependencies
文件
compile 'com.github.groovy-wslite:groovy-wslite:1.1.0'
并将我的控制器更新为这样
HelloController.groovy
package ws.thejspot
import wslite.soap.*
class HelloController {
def index() { }
def sayHi() {
return [
greeting : "Hi there, ${ params.name }"
]
}
def trigger() {
def client = new SOAPClient('URL')
}
}
不幸的是,现在IDE,GGTS在控制器中显示错误,无法解析类SOAPClient'
答案 0 :(得分:3)
您应该使用标准的Grails依赖机制 - 编辑@Grab
并查找grails-app/conf/BuildConfig.groovy
闭包,而不是尝试使用grails.project.dependency.resolution
下载依赖项。在其中,您应该在dependencies
块中添加
compile 'com.github.groovy-wslite:groovy-wslite:1.1.0'
并从控制器中移除任何与Grape相关的内容,只留下import wslite.soap.*
您可能需要运行
grails compile --refresh-dependencies
至少一次确保Grails获得对BuildConfig
的更改 - 每次编译时故意不执行完全依赖性解析,以免过度减慢构建速度,因此您需要当你知道它需要时告诉它刷新。