Groovy Servlet遇到了java.lang.ClassNotFoundException:groovy.lang.GroovyObject

时间:2015-09-21 06:45:31

标签: servlets groovy

我正在尝试使用Groovy构建一个非常简单的Servlet。由于它只是一个servlet加上几个gsp页面,我不想将Grails集成到我的项目中,因为我是新手。当我希望servlet在Tomcat服务器(v7.0)上运行时,我遇到了这样的异常:

java.lang.ClassNotFoundException: groovy.lang.GroovyObject
org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1714)
org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1559)
java.lang.ClassLoader.defineClass1(Native Method)
java.lang.ClassLoader.defineClass(ClassLoader.java:800)
java.security.SecureClassLoader.defineClass(SecureClassLoader.java:142)
org.apache.catalina.loader.WebappClassLoader.findClassInternal(WebappClassLoader.java:2904)
org.apache.catalina.loader.WebappClassLoader.findClass(WebappClassLoader.java:1173)
org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1681)
org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1559)...

看看这个帖子Got java.lang.NoClassDefFoundError: groovy/lang/GroovyObject似乎servlet.groovy编译得很好,但是不满足运行时环境。 我的问题是,如何在没有Grails的情况下遇到运行时环境(如果可能的话)?我的buildpath中已经有了groovy-all-2.3.7.jar。或者它可能是由版本问题引起的?

servlet非常简单,因为我一开始就遇到了这个问题。

import groovy.servlet.GroovyServlet

class Dispatcher extends GroovyServlet {
    private static final long serialVersionUID = 1L;
    public Dispatcher(){
        super();
    }
    protected void doGet(HttpServletRequest request,
        HttpServletResponse response) throws ServletException, IOException {
        println request;
    }

    protected void doPost(HttpServletRequest request,
        HttpServletResponse response) throws ServletException, IOException {
        println(request.getParameter("option"));
        request.setAttribute("option", request.getParameter("option"));
        Map<String,Object> result=new HashMap<>();
        request.setAttribute("result", result);
        println request;
        // Forward to GSP file to display message
        RequestDispatcher dispatcher = request
            .getRequestDispatcher("/result.gsp");
        dispatcher.forward(request, response);

    }
}

1 个答案:

答案 0 :(得分:0)

要使构建路径中的groovy-all-2.3.7.jar不够,它必须位于webapp的WEB-INF/lib文件夹中,或者也位于Tomcat的lib文件夹中。