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

时间:2013-04-10 09:08:00

标签: java tomcat servlets classnotfoundexception

我正在创建简单的servlet并在tomcat服务器中部署它,但是我收到以下错误:

  

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

时出错

tomcat服务器上的文件结构:

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

的web.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 ");
    }
}

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

9 个答案:

答案 0 :(得分:13)

不要将src文件夹放在WEB-INF目录中!!

答案 1 :(得分:4)

更改

private static final long serialVersionUID = 1L;

到任何其他值,如

private static final long serialVersionUID = 102831973239L;

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

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

答案 2 :(得分:4)

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

答案 3 :(得分:3)

你关闭了&lt; web-app&gt;你的web.xml中的标签?根据您发布的内容,结束标记似乎缺失。

答案 4 :(得分:3)

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

答案 5 :(得分:0)

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

答案 6 :(得分: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>

答案 7 :(得分:0)

请确保以下内容:

  1. 正确的“战争”文件结构,即WEB-INF和META-INF
  2. “ web.xml”文件设置正确。
  3. 最后但很重要:private static final long serialVersionUID = 1L;应该在您的课堂上(<servlet-class>MyClass</servlet-class>)。

答案 8 :(得分:0)

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

奇怪的是,如果您尝试第二次访问请求URL,则会显示404 Not Found页面。

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

就我而言,我没有加载javaassist jar使Weld CDI注入正常工作。并显示NoClassDefFound错误。