【问题标题】:Google App Engine: ClassNotFoundException after deploy but runs fine on local serverGoogle App Engine:部署后出现 ClassNotFoundException 但在本地服务器上运行良好
【发布时间】:2012-03-14 22:28:18
【问题描述】:

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

本教程非常简单,构建一个留言簿 Web 应用程序,该应用程序使用数据存储来保存用户的“问候”。 我手工完成了教程中的所有内容,并且完全按照他们所说的那样完成。当我从 Eclipse 运行它时它工作得很好,没有任何错误。

所以我部署它(没有错误,“部署成功”)只是为了看到它在继续运行更困难的示例之前运行,但我收到错误 500。检查日志我得到:“java.lang.ClassNotFoundException: guestbook.SignGuestbookServlet" 那是应用程序中唯一的 servlet,它在我的机器上运行得很好,为什么不能从应用程序引擎运行?

web.xml 上的映射是正确的(就像 google 的一样)并且 appengine-web.xml 具有应用程序名称。会是什么? 提前致谢。

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

【问题讨论】:

  • 你能放完整的堆栈跟踪吗

标签: java eclipse google-app-engine


【解决方案1】:

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

因此您可能需要检查战争中包含哪些罐子。

【讨论】:

  • 感谢您的回答。所以我唯一的 .java 是一个名为 SignGuestbookServlet.java 的单个 servlet,我尝试将其复制到 war 文件夹并没有工作。我将它映射到 web.xml 文件(即在 war 文件夹内), guestbook.SignGuestbookServlet 仍然不起作用。我不使用任何外部 .jar,除了应用引擎的,它们位于 war/lib 文件夹中。我应该编辑另一个文件以添加类路径吗?也许appengine-web.xml?大部分是空的(是自动生成的)。
  • 你的问题可能不一样,答案很笼统。
【解决方案2】:

从 Eclipse 运行的问题是 Eclipse 将所有内容和厨房水槽都放到了它的类路径中。

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

【讨论】:

    【解决方案3】:

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

    注意不要将appcfg指向源WEB-INF,而是指向目标WEB-INF(例如:指向mvn包产生的WEB-INF,包含classes/和lib/的那个)。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-06-16
      • 2020-02-25
      • 1970-01-01
      • 1970-01-01
      • 2023-02-10
      • 2013-06-08
      相关资源
      最近更新 更多