【问题标题】:Groovy servlet can't find JAR files in TomcatGroovy servlet 在 Tomcat 中找不到 JAR 文件
【发布时间】:2010-06-08 23:14:42
【问题描述】:

我创建了一个 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 文件夹中有 Groovy HTTPBuilder 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 出了什么问题?

【问题讨论】:

    标签: groovy httpbuilder groovy-grape groovlet


    【解决方案1】:

    两件事。

    首先,Groovlets 似乎不能使用 Grape(@Grab 命令)。这就是为什么当这条线出现时 groovlet 会静默失败。

    其次,http-builder 模块还依赖于大约 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 目录中获取所有这些依赖项。

    另一方面,如果您不需要任何非常花哨的东西,您可以使用 Groovy URL 对象。见some examples here

    【讨论】:

      猜你喜欢
      • 2016-07-15
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-01-18
      • 2019-03-02
      相关资源
      最近更新 更多