【问题标题】:HttpServlet is a restricted class. Please see the Google App EngineHttpServlet 是一个受限类。请参阅谷歌应用引擎
【发布时间】:2014-04-28 19:50:39
【问题描述】:

在使用 GAE SDK 1.9.3 和 Java 7 在 Eclipse Kepler (Windows 7) 上运行基本 servlet 时出现以下错误:

java.lang.NoClassDefFoundError: javax.servlet.http.HttpServlet is a restricted class.
Please see the Google App Engine developer's guide for more details.

复制:

  1. 安装 Java 7 SDK
  2. 安装开普勒
  3. 安装 GAE Eclipse 插件
  4. 创建一个 GAE 网络项目
  5. 实现基本servlet的init方法,在web.xml中设置load-on-startup1
  6. 然后运行 ​​Web 应用程序

我在 2 台机器上尝试过,我得到了同样的错误。

【问题讨论】:

  • 能否提供第 5 步的代码?
  • 只需覆盖 servlet 中的 init(ServletConfig config) 并系统输出一些东西。如果 load-on-startup 设置为 1,该方法将在启动时调用。
  • 更新:如果我使用不正确的 url,我会收到同样的错误。例如:localhost:8888/abc:访问 /abc 时出现问题。原因:javax.servlet.FilterChain 是一个受限类。有关详细信息,请参阅 Google App Engine 开发人员指南。引起:java.lang.NoClassDefFoundError:javax.servlet.FilterChain 是一个受限类。我不明白为什么会出现这个受限类错误。

标签: google-app-engine servlets noclassdeffounderror kepler


【解决方案1】:

通过扩展 HttpServlet 创建一个 servlet,然后覆盖 servlet 中的 doPost()doGet() 方法。例如:

public class FileServlet extends HttpServlet {

    @Override
    public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
          // do something
    }

【讨论】:

    【解决方案2】:

    嗯,我发现了问题所在,这是我的错误。对不起。当我安装 Java 7 时,我为 JDK 和 JRE 指定了一个不同的目录,这很好,除了我两次给出了相同的位置并且文件混淆了。我的 GAE 问题是一个副作用。

    【讨论】:

      猜你喜欢
      • 2014-06-29
      • 1970-01-01
      • 2016-05-18
      • 1970-01-01
      • 2011-05-06
      • 1970-01-01
      • 2011-12-27
      • 2012-05-07
      相关资源
      最近更新 更多