Google App Engine:部署后的ClassNotFoundException,但在本地服务器上运行正常

时间:2012-03-14 22:28:18

标签: java eclipse google-app-engine

我正在学习谷歌应用程序引擎框架和服务,为此我构建了谷歌本身在他们的谷歌应用程序引擎主页上的“文档”下提供的教程。

教程非常简单,构建一个使用数据存储区来保存用户“问候”的留言板网络应用程序。 我手动完成了教程中的所有内容,并且所有内容都像他们所说的那样。当我从eclipse运行它时,它运行得很好,没有任何错误。

所以我部署它(没有错误,“部署成功”)只是为了看到它运行,然后转向更难的例子,但我得到一个错误500.检查日志我得到:“java.lang.ClassNotFoundException: guestbook.SignGuestbookServlet“这是应用程序中唯一的servlet,它从我的机器运行得很好,为什么不从app引擎运行?

web.xml上的映射是正确的(就像谷歌一样),appengine-web.xml具有应用程序名称。它能是什么? 提前谢谢。

编辑:好吧,我现在感到愚蠢。显然我必须在部署之前构建,我认为deply程序将为我构建一切从头开始,我猜我错了。抱歉浪费任何时间,我希望有时它可以帮助有同样问题的人。

3 个答案:

答案 0 :(得分:2)

我曾经遇到过同样的问题。正如我记得的那样,我曾经在war文件中添加了一些依赖项。本地服务器在其类路径上有jar,但是appengine服务器没有,因此我得到了ClassNotFoundException。

所以你可能需要检查战争中包含哪些罐子。

答案 1 :(得分:2)

从Eclipse运行的问题是Eclipse将所有内容和厨房放入其类路径中。

我建议您分解部署war文件并检查WEB-INF / classes和WEB-INF / lib,并确保您的.class文件存在。

答案 2 :(得分:1)

我有同样的问题,然后我意识到我将appcfg指向错误的WEB-INF目录。

请记住,不要将appcfg指向源WEB-INF,而是指向目标WEB-INF(例如:通过mvn包生成的WEB-INF,包含类/和lib /)。