【问题标题】:How can I fix "The server encountered an error and could not complete your request", when working with appengine?使用 appengine 时,如何解决“服务器遇到错误,无法完成您的请求”?
【发布时间】:2013-05-28 13:09:16
【问题描述】:

我正在做我的学校项目,当我在 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>

【问题讨论】:

  • ClassNotFoundException 表示指定的类不在类路径中。如果pack.classesDAO.projectServlet 是一个类,那么您的应用引擎将找不到它。其余的异常可能是由于那个。
  • 这实际上是我的一些课程所在的包(我尝试更有条理地工作,并将所有内容安排在 2-3 个包中)。我现在会尝试修复它。谢谢你回答我:)
  • 如果pack.classesDAO.projectServlet 是一个包,那么你已经在一个需要类名的地方指定了它,所以很明显它不会找到一个类。如果您想了解更多详细信息,可以发布您的配置。
  • 我已经成功地消除了 ClassNotFoundExceotion。 Ot 相当愚蠢,我已经将我的 servlet 移到另一个包中,我认为 eclipse 会更新它的所有引用,但它没有,所以在 web.xml 中是旧类。修改后,我消除了第一个异常,但其他3个仍然存在。谢谢 :) 我会看看我能做些什么。
  • req.getParameter() 返回 null 如果请求中没有带有传递名称的参数。检查发出请求的客户端实际上是在发送它(例如:html 有一个名为 headacke 的表单输入)

标签: java google-app-engine servlets cloud


【解决方案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"));

HttpServletRequest#getParameter(String) 在 HTTP 请求中没有该名称的参数时返回 null。检查您的客户是否将其作为请求的一部分发送。例如,您应该有一个表单&lt;input&gt; 元素,其name 属性设置为headacke

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-04-18
    • 2020-10-25
    • 2011-09-20
    • 1970-01-01
    相关资源
    最近更新 更多