【问题标题】:Tomcat servlet problem - class not foundTomcat servlet 问题 - 找不到类
【发布时间】:2009-11-08 18:26:00
【问题描述】:

我正在尝试学习如何开发一个 servlet 以在 Windows XP 上的 Apache 的 Tomcat 服务器下运行。我正在使用带有 Java SDK 1.6.0_17 的 Tomcat 6.0。我的 webapp 是一个简单的 Hello, world 类型,我正在使用最新版本的 Eclipse IDE 构建它。我能够运行 Tomcat 安装中的所有示例,但是当我将我的应用程序从 Eclipse 导出到 Tomcat webapps 文件夹并尝试从我的浏览器访问它时,我收到指出 javax.servlet.http.Servlet 类无法访问的错误找不到。我搜索了 SDK 树,找不到名称中带有 javax 的任何东西,所以我猜它不存在。

我用谷歌搜索过,但没有发现任何与这个完全相同的问题有关的东西。有什么我可以尝试的建议吗?

【问题讨论】:

  • 这听起来像是坏了。您能否找到 javax.servlet.http.Servlet 类在您自己的代码中的使用位置,以及 Eclipse 为其找到的实现的位置(使用 F3 快速转到那里,然后在 Project Explorer 中查看(如果与编辑))。

标签: java tomcat servlets


【解决方案1】:

servlet.jar 中的 Servlet 类,它是 Java EE(Java 的“企业”部分)的一部分,而不是常规的 JDK 发行版。它通常位于 Tomcat 的类路径中,因此一旦您将应用程序部署到 Tomcat 中,就可以轻松找到它。

通常,这个 jar 的问题在于它通常不在 Eclipse 的类路径中,因此最终会出现编译时问题。

如果它在运行时在 Tomcat 上确实丢失,请尝试在项目的库依赖项中挖掘它(我永远无法弄清楚 Eclipse 将这些东西隐藏在哪里)并将其复制到 Tomcat 安装的“common/lib”子目录中。

【讨论】:

    【解决方案2】:

    它应该在 Tomcat 自己的类路径中的 servlet-api.jar 中可用,即Tomcat/lib 文件夹。

    如果您遇到此特定错误,可能还有更多问题。您可能将一个或多个 Tomcat 自己的库(Tomcat/lib 中的文件之一)复制到 Eclipse 中,或者更糟糕的是,复制到 JDK/lib。你不应该那样做。将所有默认库保留在它们所属的位置。切勿复制/移动它们。仅引用它们。

    如果你想使用 Eclipse 开发 webapps,你应该至少有 Eclipse for Java EE Developers 并通过 Servers 视图在 Eclipse 中集成 Tomcat 并创建了一个 Dynamic Web Project 其中您已选择之前集成的 Tomcat 实例作为默认服务器实例。

    有关同时使用 Eclipse 和 Tomcat 的更多提示,您可能会发现 this tutorial 很有用(如果不感兴趣,您可以完全跳过并忽略 JSF 部分)。

    编辑:我意识到javax.servlet.http.Servlet 类实际上并不存在。您需要javax.servlet.Servletjavax.servlet.http.HttpServlet。但这在编译时已经失败了,而不是在运行时,所以你的问题可能描述得不是很准确。

    【讨论】:

    • 更正一点:servlet-api.jar 是servlet.jar 的小兄弟:它足够满足依赖关系,避免编译错误,所以它通常在Eclipse 的构建路径中;但对于实际功能,需要 servlet.jar 在 webapp 运行的地方可用。
    • 文件名是特定于应用服务器的。 Tomcat 没有 servlet.jar,但称它为 servlet-api.jar。
    • addendum: 只有将服务器集成到 Eclipse 中并将其与项目相关联,Eclipse 才能找到它。您不应该在 Eclipse 构建路径中手动复制/引用它。
    猜你喜欢
    • 1970-01-01
    • 2011-02-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-11-25
    • 2011-11-24
    • 1970-01-01
    • 2012-07-06
    相关资源
    最近更新 更多