我正在学习一个名为geoscript-groovy的脚本包的groovy.我在这里按照groovy REST教程测试了以下代码:
import groovyx.net.http.RESTClient
def client = new RESTClient( 'http://www.acme.com/' )
def resp = client.get( path : 'products/3322' ) // ACME boomerang
Run Code Online (Sandbox Code Playgroud)
但是,我在import声明中说错了:
Groovy:unable to resolve class groovyx.net.http.RESTClient
Run Code Online (Sandbox Code Playgroud)
我四处搜索,这个错误信息有很多问题和答案,例如,在Groovy类中导入groovyx.net.http.RESTClient,而RestClient Grails导入失败.然而,他们都是grails,我不使用,也不是很熟悉.
我的问题是
如果我只有groovy,我应该如何解决这个错误?(我的版本的groovy安装在Ubuntu 12.04下,带有以下命令).
sudo apt-add-repository ppa:groovy-dev/groovy
sudo apt-get update
sudo apt-get install groovy
Run Code Online (Sandbox Code Playgroud)
谢谢.
- 编辑---
我按照建议添加了@Grab语句,并按如下方式放置了两行rest1.groovy文件:
@Grab(group='org.codehaus.groovy.modules.http-builder', module='http-builder', version='0.7')
import groovyx.net.http.RESTClient
Run Code Online (Sandbox Code Playgroud)
groovyConsole rest1.groovy似乎运行正常.但groovysh < rest1.groovy仍然给我一个错误(如下所示).我想我需要在类似groovysh环境中运行,因为groovy脚本在后台作为Web服务调用.如果没有该@Grab行,该服务将生成异常.使用该@Grab线路,该服务甚至不会注册.是否有一种更持久的方式来包含必要的依赖性,而groovyx.net.http.RESTClient不是每个脚本抓取(例如,apt-get手动复制某些东西)?
groovysh < rest1.groovy
Groovy Shell (1.8.6, JVM: 1.7.0_72)
Type 'help' or '\h' for help.
-------------------------------------------------------------------------------
groovy:000> @Grab(group='org.codehaus.groovy.modules.http-builder', module='http-builder', version='0.7')
groovy:001> import groovyx.net.http.RESTClient
ERROR org.codehaus.groovy.tools.shell.CommandException:
Invalid import definition: 'import groovyx.net.http.RESTClient'; reason: startup failed:
script1413902882282760571375.groovy: 1: unable to resolve class groovyx.net.http.RESTClient
@ line 1, column 1.
import groovyx.net.http.RESTClient
Run Code Online (Sandbox Code Playgroud)
bil*_*dev 13
你可能只需要Grape一行就可以正确地确保你的Groovy脚本在类路径中有你需要的jar.把它放在脚本的顶部:
@Grab(group='org.codehaus.groovy.modules.http-builder', module='http-builder', version='0.7' )
Run Code Online (Sandbox Code Playgroud)
注意,我看不到你脚本的其余部分,所以你可能还需要其他模块来抓取.点击此处查看更多可能性:http: //groovy.codehaus.org/modules/http-builder/doc/rest.html
编辑
嗯,很高兴它现在的一部分工作.至于groovysh,我不知道如何让groovysh动态获取依赖库,所以你真正需要做的是,作为脚本安装的一部分,还将你需要的jar放在一个目录中(调用它"lib"或其他一些),然后将参数添加到你的groovysh调用:groovysh -cp ./lib <script.groovy from this:http://groovy.codehaus.org/Groovy+Shell
您想要的jar应该可以通过maven使用@Grab行中的工件规范获得.
| 归档时间: |
|
| 查看次数: |
18176 次 |
| 最近记录: |