我正在尝试使用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);
}
}
答案 0 :(得分:0)
要使构建路径中的groovy-all-2.3.7.jar
不够,它必须位于webapp的WEB-INF/lib
文件夹中,或者也位于Tomcat的lib
文件夹中。