Servlet 500错误

SeekCloud 2015-09-07 03:34:47


HTTP Status 500 - Error instantiating servlet class com.test.Hello


type Exception report

message Error instantiating servlet class com.test.Hello

description The server encountered an internal error that prevented it from fulfilling this request.

exception
javax.servlet.ServletException: Error instantiating servlet class com.test.Hello
org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:502)
org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:79)
org.apache.catalina.valves.AbstractAccessLogValve.invoke(AbstractAccessLogValve.java:616)
org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:518)
org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1091)
org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:673)
org.apache.tomcat.util.net.AprEndpoint$SocketProcessor.doRun(AprEndpoint.java:2503)
org.apache.tomcat.util.net.AprEndpoint$SocketProcessor.run(AprEndpoint.java:2492)
java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61)
java.lang.Thread.run(Thread.java:745)


root cause
java.lang.ClassNotFoundException: com.test.Hello
org.apache.catalina.loader.WebappClassLoaderBase.loadClass(WebappClassLoaderBase.java:1332)
org.apache.catalina.loader.WebappClassLoaderBase.loadClass(WebappClassLoaderBase.java:1166)
org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:502)
org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:79)
org.apache.catalina.valves.AbstractAccessLogValve.invoke(AbstractAccessLogValve.java:616)
org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:518)
org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1091)
org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:673)
org.apache.tomcat.util.net.AprEndpoint$SocketProcessor.doRun(AprEndpoint.java:2503)
org.apache.tomcat.util.net.AprEndpoint$SocketProcessor.run(AprEndpoint.java:2492)
java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61)
java.lang.Thread.run(Thread.java:745)


【web.xml里的class也设置对了】
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://xmlns.jcp.org/xml/ns/javaee" xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_3_1.xsd" id="WebApp_ID" version="3.1">
<display-name>TestServlet</display-name>
<servlet>
<servlet-name>Hello</servlet-name>
<display-name>This is the display name of my J2EE component</display-name>
<description>This is the description of my J2EE component</description>
<servlet-class>com.test.Hello</servlet-class>
</servlet>

<servlet-mapping>
<servlet-name>Hello</servlet-name>
<url-pattern>/servlet/Hello</url-pattern>
</servlet-mapping>
<welcome-file-list>
<welcome-file>index.html</welcome-file>
<welcome-file>index.htm</welcome-file>
<welcome-file>index.jsp</welcome-file>
<welcome-file>default.html</welcome-file>
<welcome-file>default.htm</welcome-file>
<welcome-file>default.jsp</welcome-file>
</welcome-file-list>
</web-app>

【测试程序】
package com.test;

import java.io.IOException;
import java.io.PrintWriter;

import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

public class Hello extends HttpServlet {

public Hello() {
super();
}

public void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {

PrintWriter out = response.getWriter();
out.println("Hello");
}

public void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {

this.doGet(request, response);
}

}
...全文
299 15 打赏 收藏 转发到动态 举报
写回复
用AI写文章
15 条回复
切换为时间正序
请发表友善的回复…
发表回复
SeekCloud 2015-09-07
  • 打赏
  • 举报
回复
引用 11 楼 shijing266 的回复:
右键你的项目,选择Properties——>选择Java Build Path 的Source 然后设置编译路径为WEB-INF 下的classes

然后重启项目





sorry,打扰了,你提起classes我才去Tomcat下面看才发现classes下面是空的

我自己的问题,新下的这个myeclipse没有开自动编译







引用 9 楼 sk_wangchang 的回复:
你是用什么发布的,如果是tomcat的话,发布的时候注意看一下你的工作空间,有可能以前发布过相同的名字的项目,结果就会替换掉项目名,


十分抱歉,我自己的原因,打扰了。
马七甲 2015-09-07
  • 打赏
  • 举报
回复
楼主这颜色I Like
  • 打赏
  • 举报
回复
那你去这个文件目录下,看看项目编译了没
SeekCloud 2015-09-07
  • 打赏
  • 举报
回复
引用 11 楼 shijing266 的回复:
右键你的项目,选择Properties——>选择Java Build Path 的Source 然后设置编译路径为WEB-INF 下的classes

然后重启项目


项目默认就是WEB-INF 下的classes



  • 打赏
  • 举报
回复
右键你的项目,选择Properties——>选择Java Build Path 的Source 然后设置编译路径为WEB-INF 下的classes 然后重启项目
SeekCloud 2015-09-07
  • 打赏
  • 举报
回复
引用 9 楼 sk_wangchang 的回复:
你是用什么发布的,如果是tomcat的话,发布的时候注意看一下你的工作空间,有可能以前发布过相同的名字的项目,结果就会替换掉项目名,
tomcat新下的,配置完之后测试的jsp和servlet的,项目都是首次新建的。
sk_wangchang 2015-09-07
  • 打赏
  • 举报
回复
你是用什么发布的,如果是tomcat的话,发布的时候注意看一下你的工作空间,有可能以前发布过相同的名字的项目,结果就会替换掉项目名,
SeekCloud 2015-09-07
  • 打赏
  • 举报
回复
引用 7 楼 baidu_31006959 的回复:
有重新部署过吗?改过web.xml和Hello.java是需要重新部署的哦! 我这也搭建了一个myeclipse和eclipse访问servlet都没有问题! 如果还是不行的话建议删掉工程,新建一个!
web.xml也是由myeclipse自动更新的,我试了好几次都不行不知道为什么。
baidu_31006959 2015-09-07
  • 打赏
  • 举报
回复
有重新部署过吗?改过web.xml和Hello.java是需要重新部署的哦!
我这也搭建了一个myeclipse和eclipse访问servlet都没有问题!
如果还是不行的话建议删掉工程,新建一个!
SeekCloud 2015-09-07
  • 打赏
  • 举报
回复
引用 5 楼 baidu_31006959 的回复:
按照楼主的代码,我这边也新建了个项目访问根本没有问题! 请问楼主有没有改过目录或什么其他操作!
直接在myeclipse创建的,目录结构就是包管理器那张图那样的, 我试了好几次,测试的jsp没问题,servlet不知道为什么,一直是500错误。
baidu_31006959 2015-09-07
  • 打赏
  • 举报
回复
按照楼主的代码,我这边也新建了个项目访问根本没有问题! 请问楼主有没有改过目录或什么其他操作!
SeekCloud 2015-09-07
  • 打赏
  • 举报
回复
引用 3 楼 baidu_31006959 的回复:
重新访问下 http://localhost:8080/TestServlet/servlet/Hello
你配置的是/servlet/Hello 而不是 /Hello


还是500错误
baidu_31006959 2015-09-07
  • 打赏
  • 举报
回复
重新访问下 http://localhost:8080/TestServlet/servlet/Hello 你配置的是/servlet/Hello 而不是 /Hello
SeekCloud 2015-09-07
  • 打赏
  • 举报
回复
引用 1 楼 baidu_31006959 的回复:
访问地址写错了吧,发出来看看!
myeclipse下的,应该不是这个访问地址的问题 http://localhost:8080/TestServlet/Hello
baidu_31006959 2015-09-07
  • 打赏
  • 举报
回复
访问地址写错了吧,发出来看看!

81,092

社区成员

发帖
与我相关
我的任务
社区描述
Java Web 开发
社区管理员
  • Web 开发社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧