11

我正在创建简单的 servlet 并将其部署在 tomcat 服务器中,但出现以下错误:

HTTP 状态 500 - 实例化 servlet 类 pkg.coreServlet 时出错

Tomcat服务器上的文件结构:

webapps     
| 
- aarya
  |
  - WEB-INF
    |
     -web.xml
     -src(folder)
       |
       -pkg
         |
         -coreServlet.class

网页.xml:

<?xml version="1.0" encoding="UTF-8"?>
<web-app version="2.4" xmlns="http://java.sun.com/xml/ns/j2ee"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee 
    http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd">


<servlet>
    <servlet-name>aaryaservlet</servlet-name>
    <servlet-class>pkg.coreServlet</servlet-class>
</servlet>

<servlet-mapping>
    <servlet-name>aaryaservlet</servlet-name>
        <url-pattern>/coreServlet</url-pattern>
    </servlet-mapping>
</web-app>

coreServlet.java:

package pkg;

import java.io.*;
import javax.servlet.*;
import javax.servlet.http.*; 

public class coreServlet extends HttpServlet
{
    /**
     * 
     */
    private static final long serialVersionUID = 1L;

public void doGet(HttpServletRequest req,HttpServletResponse res)
 throws ServletException,IOException


   {
        PrintWriter out = res.getWriter();
        res.setContentType("text/html");
        out.println("this is First servlet Example ");
    }
}

我给出的 url 是http://localhost:8080/aarya/coreServlet 我尝试重新启动 tomcat,但我得到了同样的错误。我在哪里做错了?

4

9 回答 9

14

不要把src文件夹放在WEB-INF目录下!!

于 2013-04-10T09:11:02.883 回答
8

更改

private static final long serialVersionUID = 1L;

到任何其他值,例如

private static final long serialVersionUID = 102831973239L;

你也可以在eclipse中自动生成它。

这是因为应用程序中的每个 servlet 都有一个唯一的 id。而 tomcat 会导致两个具有相同 id 的 servlet 出现问题......

于 2014-06-09T10:21:49.253 回答
5

在我的情况下,缺少private static final long serialVersionUID = 1L;行导致了同样的错误。我添加了这条线,它起作用了!

于 2015-03-29T06:21:42.290 回答
4

您是否关闭了 web.xml 中的 < web-app > 标签?从您发布的内容来看,结束标签似乎丢失了。

于 2013-04-10T09:15:43.140 回答
4

servlet 类应该在 WEB-INF/classes 而不是 WEB-INF/src。

于 2013-04-10T09:17:45.937 回答
1

在servlet 启动/请求期间,可能会出现上述错误。希望您检查服务器日志的完整堆栈跟踪,如果您有 tomcat,您还可以在 500 Internal Server Error 页面的 html 预览中查看确切原因

奇怪的是,如果你再次尝试点击请求 url,你会得到 404 Not Found 页面。

您还可以通过在所有类构造函数初始化块上放置断点来调试此问题,其对象是在 servlet 启动/请求期间创建的。

就我而言,我没有为 Weld CDI 注入工作加载 javaassist jar。它显示 NoClassDefFound 错误。

于 2020-01-05T17:54:11.747 回答
0

我遇到了 Servlet 实例化的问题。我清理了这个项目,它对我有用。在 Eclipse 菜单中,转到 Project->Clean。它应该工作。

于 2017-04-14T18:28:54.820 回答
0

尝试这个:)

前:-

<servlet>
    <servlet-name>TestServlet</servlet-name>
    <servlet-class>TestServlet</servlet-class>  
</servlet>

后:-

 <servlet>
    <servlet-name>TestServlet</servlet-name>
    <servlet-class>operation.TestServlet</servlet-class>
 </servlet>
于 2017-12-06T06:22:14.380 回答
0

确保以下内容:

  1. 正确的“战争”文件结构,即 WEB-INF 和 META-INF
  2. “web.xml”文件设置正确。
  3. 最后也是重要的:private static final long serialVersionUID = 1L;应该在你的课堂上(<servlet-class>MyClass</servlet-class>)。
于 2019-04-27T18:38:52.307 回答