2013-07-30 143 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已經解決了這個問題。