在使用appengine时,如何修复“服务器遇到错误而无法完成您的请求”?

时间:2013-05-28 13:09:16

标签: java google-app-engine servlets cloud

我正在做一个我的学校项目,当我在appengine上部署我的java(web应用程序)时,我一直收到错误:

       Error: Server Error

       The server encountered an error and could not complete your request.
       If the problem persists, please report your problem and mention this error message and the query that caused it.

我一直在与教程并行,遵循与其相同的步骤:http://trumpy.cs.elon.edu/joel/sigcse2011/。很久很久以前我一直在做相同的教程,它工作得很好,但现在我用我自己的数据重做它,我只是用它来建立一个我相信它有效的结构。

问题是当我尝试在数据存储区中执行保存时,我不断收到此错误。这可能是因为我一直在做的一些日食更新?否则,我认为没有理由不这样做(我一直在重复检查我的代码,我认为如果这是一个逻辑错误或我做错了我应该收到另一种类型的错误)。

我想补充一点,部署是成功的,当我访问.appspot.com时,我看到了问候消息,但当我点击执行保存操作的servlet时,我收到此错误。

提前感谢您,我们非常感谢您的帮助。

LE:我一直试图从应用引擎SDK 1.8.0切换到1.7.7,正如我在一些网站上看到的建议,但没有成功的结果。

LE:这就是我的日志的样子,我正在试图弄清楚如何解释它。在这个意义上的任何帮助表示赞赏,我很抱歉这些问题,但对于我来说,与谷歌应用引擎相关的一切都是新的:):

EXCEPTION 
java.lang.ClassNotFoundException: pack.classesDAO.projectServlet

javax.servlet.ServletContext log: unavailable
javax.servlet.UnavailableException: pack.classesDAO.projectServlet

Failed startup of context com.google.apphosting.utils.jetty.RuntimeAppEngineWebAppContext@190d003{/,/base/data/home/apps/s~projectServlet/1.367688587833153738}
java.lang.NullPointerException

Uncaught exception from servlet
javax.servlet.UnavailableException: Initialization failed.

此请求导致为您的应用程序启动了一个新进程,从而导致您的应用程序代码首次加载。因此,此请求可能需要更长的时间,并且使用的CPU比典型的应用程序请求更多。

有些非常直观,所以我会再看一下,但有些我不知道它们是什么意思。

实际上,这是我现在的例外:

      java.lang.NullPointerException
at sun.misc.FloatingDecimal.readJavaFormatString(FloatingDecimal.java:1008)

我知道它可能在哪里:

      double theHeadacke = Double.parseDouble(req.getParameter("headacke"));

但我不确定这里有什么不对。

这是我的web.xml

    <?xml version="1.0" encoding="utf-8"?>
    <web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xmlns="http://java.sun.com/xml/ns/javaee"
    xmlns:web="http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"
    xsi:schemaLocation="http://java.sun.com/xml/ns/javaee
    http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" version="2.5">
<servlet>
    <servlet-name>DiplomaThesisRoxana</servlet-name>
    <servlet-class>pack.servlets.DiplomaThesisRoxanaServlet</servlet-class>
</servlet>
<servlet-mapping>
    <servlet-name>DiplomaThesisRoxana</servlet-name>
    <url-pattern>/diplomathesisroxana</url-pattern>
</servlet-mapping>
<welcome-file-list>
    <welcome-file>index.html</welcome-file>
</welcome-file-list>

1 个答案:

答案 0 :(得分:1)

当您的类路径中缺少指定的类时,会发生java.lang.ClassNotFoundException。所以pack.classesDAO.projectServlet要么不是你认为应该的位置,要么命名不同,要么根本就不存在。

从你的编辑

  java.lang.NullPointerException
at sun.misc.FloatingDecimal.readJavaFormatString(FloatingDecimal.java:1008)
I have an idea from where it might be:

      double theHeadacke = Double.parseDouble(req.getParameter("headacke"));
当HTTP请求中没有该名称的参数时,

HttpServletRequest#getParameter(String)返回null。检查您的客户端是否将其作为请求的一部分发送。例如,您应该有一个<input>元素的表单,name属性设置为headacke