2015-09-21 55 views
0

我想用Groovy構建一個非常簡單的Servlet。由於它只是一個單獨的servlet加上幾個gsp頁面,我不想將Grails集成到我的項目中,因爲我對它很陌生。當我想Tomcat服務器(V7.0)在servlet的來看,我遇到過這樣的例外:Groovy Servlet遇到java.lang.ClassNotFoundException:groovy.lang.GroovyObject

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編譯罰款,但運行時ENV不滿足。 我的問題是,如何在沒有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

你寫了_我的buildpath_中已經有groovy-all-2.3.7.jar,但是你在webapp的WEB-INF/lib或者Tomcat的lib文件夾中有嗎? –

+0

糟糕,它並未包含在Tomcat的lib文件夾中。現在它完美地工作。謝謝!我希望我在一小時前知道它! – OrlandoL

+0

@JozefChocholacek你應該將其作爲回答 – Will

回答

0

要在構建路徑中groovy-all-2.3.7.jar是不夠的,它必須是在webapp的WEB-INF/lib文件夾,或者在Tomcat的lib文件夾了。