servlet 打开网页报错500

lwjok2007 2013-01-27 09:22:11
自己编写了一个简单的servlet 编译正常 打开网页时提示:
HTTP Status 500 - Error instantiating servlet class HelloWorldTest

type Exception report

message Error instantiating servlet class HelloWorldTest

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

exception

javax.servlet.ServletException: Error instantiating servlet class HelloWorldTest
org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:99)
org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:936)
org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:407)
org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1004)
org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:589)
org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:310)
java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:886)
java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:908)
java.lang.Thread.run(Thread.java:619)

root cause

java.lang.UnsupportedClassVersionError: HelloWorldTest : Unsupported major.minor version 51.0 (unable to load class HelloWorldTest)
org.apache.catalina.loader.WebappClassLoader.findClassInternal(WebappClassLoader.java:2908)
org.apache.catalina.loader.WebappClassLoader.findClass(WebappClassLoader.java:1173)
org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1681)
org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1559)
org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:99)
org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:936)
org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:407)
org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1004)
org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:589)
org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:310)
java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:886)
java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:908)
java.lang.Thread.run(Thread.java:619)

note The full stack trace of the root cause is available in the Apache Tomcat/7.0.34 logs.



源程序如下:
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 HelloWorldTest extends HttpServlet {
private static final long serialVersionUID = 1L;
protected void doGet(HttpServletRequest req, HttpServletResponse resp)
throws ServletException, IOException {
PrintWriter out=resp.getWriter();
out.write("<html><head><title>nihao</title></head><body>hello world!</body></html>");
out.flush();
out.close();
}
}




web.xml配置如下:
<?xml version="1.0" encoding="ISO-8859-1"?>
<web-app xmlns="http://java.sun.com/xml/ns/javaee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/javaee
http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd"
version="3.0"
metadata-complete="true">
<servlet>
<servlet-name>myfristservlet</servlet-name>
<servlet-class>HelloWorldTest</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>myfristservlet</servlet-name>
<url-pattern>/myfristservlet</url-pattern>
</servlet-mapping>

</web-app>

麻烦大家看看是什么错误?
...全文
938 29 打赏 收藏 转发到动态 举报
写回复
用AI写文章
29 条回复
切换为时间正序
请发表友善的回复…
发表回复
jumpheightway 2013-03-07
  • 打赏
  • 举报
回复
下载一个高版本的jre去替换你tomcat中使用的jre就行了
lwjok2007 2013-02-01
  • 打赏
  • 举报
回复
引用 27 楼 a597926661 的回复:
classpath?楼主好好配一下path 应该确定的是你tomcat用的jdk跟你编译项目的jdk是不一版本的 我说点题外话:JDK应该是向后兼容的 所以1.5编译的class可以跑在1.6的JDK创建的JVM上 除非必须 还是建议用低版本的JDK开发编译。而且现在企业应用比较多的还是1.5吧,当然android是必须1.6及以上版本。
好的,实在不行我就试下1.5的。 是path 不是classpath我写错了。 path里面配置的jdk是1.7的:C:\Java\jdk1.7.0_10\bin;
lwjok2007 2013-01-31
  • 打赏
  • 举报
回复
引用 25 楼 a597926661 的回复:
引用 24 楼 lwjok2007 的回复:引用 23 楼 mengjunquan 的回复: 1,兄弟,首先你再次确定一下,你使用的时Eclipse 不是MyEclipse 对吧! 2、当你把web项目建立好后,不是需要新建一个Servers,tomcat 服务的吗?这个时候服务建立好后,你双击你刚才新建的服务,就会弹出我所截出的图,再Runtime Enviro……
本机配置的环境变量 classpath 为jdk1.7的。 我通过eclipse的tomcat插件能正常启动tomcat 并且打开网站是正常的 。只要使用tomcat下bin/stratup.bat启动打开网页报错就会出现我发的错误。所以我也怀疑是tomcat的问题。我使用的tomcat 是apache-tomcat-7.0.34。
a597926661 2013-01-31
  • 打赏
  • 举报
回复
引用 24 楼 lwjok2007 的回复:
引用 23 楼 mengjunquan 的回复: 1,兄弟,首先你再次确定一下,你使用的时Eclipse 不是MyEclipse 对吧! 2、当你把web项目建立好后,不是需要新建一个Servers,tomcat 服务的吗?这个时候服务建立好后,你双击你刚才新建的服务,就会弹出我所截出的图,再Runtime Environment 打开后,就会弹出,有设置jdk的地方。 我截图传不上……
这种情况的话你需要配置环境变量了 直接启动tomcat的话tomcat会读取环境变量 默认使用环境变量中配置的JDK 也可以去修改启动tomcat的批处理文件 这个风险略大 不推荐
a597926661 2013-01-31
  • 打赏
  • 举报
回复
classpath?楼主好好配一下path 应该确定的是你tomcat用的jdk跟你编译项目的jdk是不一版本的 我说点题外话:JDK应该是向后兼容的 所以1.5编译的class可以跑在1.6的JDK创建的JVM上 除非必须 还是建议用低版本的JDK开发编译。而且现在企业应用比较多的还是1.5吧,当然android是必须1.6及以上版本。
lwjok2007 2013-01-30
  • 打赏
  • 举报
回复
引用 21 楼 a597926661 的回复:
引用 20 楼 lwjok2007 的回复:引用 18 楼 a597926661 的回复:
引用 15 楼 mengjunquan 的回复:
楼主不仅要给项目配置JDK还要给tomcat配JDK啊 只有这二者的JDK版本一致才行。
tomcat 的jdk在哪配置?怎么查看当前tomcat的jdk版本?
问题应该就出在这 tomcat的jdk版本配置低
Eclip……


15楼是 window-Preferences-tomcat-JVM Settings的配置吗?
我的界面截图如下显示是1.7的
a597926661 2013-01-30
  • 打赏
  • 举报
回复
引用 20 楼 lwjok2007 的回复:
引用 18 楼 a597926661 的回复: 引用 15 楼 mengjunquan 的回复: 楼主不仅要给项目配置JDK还要给tomcat配JDK啊 只有这二者的JDK版本一致才行。 tomcat 的jdk在哪配置?怎么查看当前tomcat的jdk版本? 问题应该就出在这 tomcat的jdk版本配置低
Eclipse安装插件的tomcat可以按照15楼的截图配置 这个东西吧 楼主可以百度 这样在这说有点麻烦
lwjok2007 2013-01-30
  • 打赏
  • 举报
回复
引用 18 楼 a597926661 的回复:
引用 15 楼 mengjunquan 的回复: 楼主不仅要给项目配置JDK还要给tomcat配JDK啊 只有这二者的JDK版本一致才行。
tomcat 的jdk在哪配置?怎么查看当前tomcat的jdk版本? 问题应该就出在这 tomcat的jdk版本配置低
lwjok2007 2013-01-30
  • 打赏
  • 举报
回复
引用 15 楼 mengjunquan 的回复:
兄弟 ,能截图稍微大点吗。或者说下这个设置在哪个目录下?
a597926661 2013-01-30
  • 打赏
  • 举报
回复
引用 15 楼 mengjunquan 的回复:
楼主不仅要给项目配置JDK还要给tomcat配JDK啊 只有这二者的JDK版本一致才行。
开灰机撞猪 2013-01-30
  • 打赏
  • 举报
回复
提示这个就是 你的jsp出错了,看看那里写错了。
fred91 2013-01-30
  • 打赏
  • 举报
回复
额,重写doGet什么的有没有写错哦
简易人 2013-01-30
  • 打赏
  • 举报
回复

lwjok2007 2013-01-30
  • 打赏
  • 举报
回复
引用 23 楼 mengjunquan 的回复:
1,兄弟,首先你再次确定一下,你使用的时Eclipse 不是MyEclipse 对吧!

2、当你把web项目建立好后,不是需要新建一个Servers,tomcat 服务的吗?这个时候服务建立好后,你双击你刚才新建的服务,就会弹出我所截出的图,再Runtime Environment 打开后,就会弹出,有设置jdk的地方。

我截图传不上去,所以用别人机子截图的
……


1,使用的是 eclipse
2,我不是直接在eclipse 下新建的web 项目 而是java project。新建一个class实现一个servlert然后保存,再到workspace下将 .class 文件拷贝到tomcat下我建好的webapp。
所以我没有找到你发的截图。

我在eclipse 安装了tomcat插件,通过启动tomcat 打开网页就正常了。
手动启动tomcat的bin目录下startup.bat打开网页就会报我上边的错误。
简易人 2013-01-30
  • 打赏
  • 举报
回复
1,兄弟,首先你再次确定一下,你使用的时Eclipse 不是MyEclipse 对吧! 2、当你把web项目建立好后,不是需要新建一个Servers,tomcat 服务的吗?这个时候服务建立好后,你双击你刚才新建的服务,就会弹出我所截出的图,再Runtime Environment 打开后,就会弹出,有设置jdk的地方。 我截图传不上去,所以用别人机子截图的
lwjok2007 2013-01-29
  • 打赏
  • 举报
回复
引用 12 楼 mengjunquan 的回复:
兄弟,当前这个类是用jdk高版本编译的,而你此时却用低jdk 来访问,故此出现的错误。首先你把缓存清掉,再重现把,java类编译成class 再进行访问。
我是直接将eclipse下的class拷贝到tomcat 相应webapp目录下的。 你说的低版本jdk调用,具体指哪里的jdk版本? 4楼 6楼 有我jdk版本的截图,都是1.7。
sunflower_cheney 2013-01-29
  • 打赏
  • 举报
回复
引用 12 楼 mengjunquan 的回复:
兄弟,当前这个类是用jdk高版本编译的,而你此时却用低jdk 来访问,故此出现的错误。首先你把缓存清掉,再重现把,java类编译成class 再进行访问。
+++++
简易人 2013-01-28
  • 打赏
  • 举报
回复
兄弟,当前这个类是用jdk高版本编译的,而你此时却用低jdk 来访问,故此出现的错误。首先你把缓存清掉,再重现把,java类编译成class 再进行访问。
sunflower_cheney 2013-01-28
  • 打赏
  • 举报
回复
就是JDK版本编译问题
lwjok2007 2013-01-28
  • 打赏
  • 举报
回复
引用 9 楼 jumpheightway 的回复:
jre版本问题
具体怎么修改?
加载更多回复(8)

81,094

社区成员

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

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