2013-07-30 87 views
0

我正试图将现有的vaadin项目部署到GAE。 但我不断收到错误:ClassNotFoundException: com.vaadin.server.GAEApplicationServlet如何在GAE上部署vaadin项目?

这是我做了什么:

  • 注释掉@WebServlet注释在我extends UI

  • 工程中的属性,检查:使用Google App Engine。从而将一些库添加到 我的WEB-INF/lib文件夹中:gwt-servlet, jsr107, some appendine-*

  • 创建的appengine-web.xml

  • 创建的web.xml

    <servlet> 
        <servlet-name>MyProject</servlet-name> 
        <servlet-class>com.vaadin.server.GAEApplicationServlet</servlet-class> 
        <init-param> 
         <param-name>UI</param-name> 
         <param-value>de.mypath.ApplicationUI</param-value> 
        </init-param> 
    </servlet> 
    

<servlet-mapping> <servlet-name>MyProject</servlet-name> <url-pattern>/*</url-pattern> </servlet-mapping>

如果我使用com.vaadin.server.VaadinServlet并在本地tomcat上运行,那么我可以运行我的项目。 但是在码头GAE上运行(或者在云中部署)我得到上面提到的ClassNotFountException

这里有什么问题?

回答

0

自从我使用GAE以来已经有一段时间了,但是当我自己的时候,似乎我不得不自己添加一些jar到WEB-INF/lib,尽管本地一切正常。后来我会收到有关这些罐子的警告,但是如果我删除它们,我会再次得到NoClassDefFoundException。

+0

抱怨的类来自vaadin-servlet.jar。我已经在WEB-INF/lib文件夹中复制了它(在所有其他库中)以进行测试,但没有改变任何东西... – membersound

+0

我能想到的唯一的其他事情是GAE中不允许有一些类,尽管它似乎GAEApplicationServlet,因为名称不应该引用任何这些。最新的vaadin-servlet.jar有多新颖?也许尝试以前的版本? – EGHM

+0

使用7.1.1,也试过7.1.0。但是,由于我使用Servlet 3.0,所以不能再回头了...... – membersound

0

复制vaadin-服务器7.5.10.jar到WEB-INF/lib和使用的com.vaadin.server.GAEVaadinServlet代替com.vaadin.server.GAEApplicationServlet已经解决了这个问题。