Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/joomla/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
GroovyServlet可以';在Tomcat中找不到JAR文件_Groovy_Groovlet_Grape_Httpbuilder - Fatal编程技术网

GroovyServlet可以';在Tomcat中找不到JAR文件

GroovyServlet可以';在Tomcat中找不到JAR文件,groovy,groovlet,grape,httpbuilder,Groovy,Groovlet,Grape,Httpbuilder,我创建了一个groovlet,它将充当某种HTTP代理。它接受GET请求,然后根据请求中提供的URL进行web服务调用 以下是我目前掌握的代码: @Grab(group='org.codehaus.groovy.modules.http-builder', module='http-builder', version='0.5.0') import groovyx.net.http.* import static groovyx.net.http.ContentType.* import sta

我创建了一个groovlet,它将充当某种HTTP代理。它接受GET请求,然后根据请求中提供的URL进行web服务调用

以下是我目前掌握的代码:

@Grab(group='org.codehaus.groovy.modules.http-builder', module='http-builder', version='0.5.0')
import groovyx.net.http.*
import static groovyx.net.http.ContentType.*
import static groovyx.net.http.Method.*

String url = params.url

def http = new HTTPBuilder(url)

http.request(GET, TEXT) {

     response.success = { resp, reader ->
       println reader
     }

     response.'404' = { resp -> 
       println 'not found!'
     }
}
我在groovlet的
WEB-INF/lib
文件夹中找到了JAR文件。然而,代码并没有正常工作。(我还尝试将文件夹放入
$TOMCAT_HOME/common/lib
,结果如下。)

当我完全按照上面的方式运行代码时,页面返回为完全空白

如果我只删除顶部的
@Grab
行(因为JAR理论上应该已经在类路径中),我会从Tomcat那里得到一个严重的错误(我在5.5上运行它,但在6上得到了大致相同的行为):

HTTP状态500-GroovyServlet错误: 脚本:'/proxy.groovy':脚本 处理失败。启动失败: 语义分析中的一般错误 分析:类型 org.apache.http.client.methods.HttpRequestBase 不在场 java.lang.TypeNotPresentException: 类型 org.apache.http.client.methods.HttpRequestBase 不在场

然后是堆栈跟踪

我的groovlet怎么了?

两件事

首先,Groovlet似乎不能使用Grape(Grab命令)。这就是为什么当这一行出现时,groovlet会无声地失败

其次,
httpbuilder
模块还依赖于大约19个其他包(包括错误消息中引用的
org.apache.http.client.methods.HttpRequestBase
)。您可以在
~/.groovy/grapes
文件夹中找到这些包

如果要查找所有依赖项,请删除Grapes目录。然后在本地运行使用该
@Grab
命令的脚本。脚本执行完毕后,您可以查看Grapes目录,查看它下载的所有内容

当我这么做的时候,我得到了下面的包列表:

antlr
asm
commons-beanutils
commons-codec
commons-collections
commons-lang
commons-logging
net.sf.ezmorph
net.sf.json-lib
net.sourceforge.nekohtml
org.apache
org.apache.commons
org.apache.httpcomponents
org.codehaus.groovy
org.codehaus.groovy.modules.http-builder
xerces
因此,如果您想在groovlet中使用HttpBuilder,则需要在WEB-INF/lib或Tomcat common/lib目录中获取所有这些依赖项

另一方面,如果您不需要非常新奇的东西,可以使用GroovyURL对象。请参阅。

两件事

首先,Groovlet似乎不能使用Grape(Grab命令)。这就是为什么当这一行出现时,groovlet会无声地失败

其次,
httpbuilder
模块还依赖于大约19个其他包(包括错误消息中引用的
org.apache.http.client.methods.HttpRequestBase
)。您可以在
~/.groovy/grapes
文件夹中找到这些包

如果要查找所有依赖项,请删除Grapes目录。然后在本地运行使用该
@Grab
命令的脚本。脚本执行完毕后,您可以查看Grapes目录,查看它下载的所有内容

当我这么做的时候,我得到了下面的包列表:

antlr
asm
commons-beanutils
commons-codec
commons-collections
commons-lang
commons-logging
net.sf.ezmorph
net.sf.json-lib
net.sourceforge.nekohtml
org.apache
org.apache.commons
org.apache.httpcomponents
org.codehaus.groovy
org.codehaus.groovy.modules.http-builder
xerces
因此,如果您想在groovlet中使用HttpBuilder,则需要在WEB-INF/lib或Tomcat common/lib目录中获取所有这些依赖项

另一方面,如果您不需要非常新奇的东西,可以使用GroovyURL对象。看