我正在创建简单的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但我得到同样的错误。我在哪里做错了?
答案 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)
请确保以下内容:
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错误。