今天碰到了一个棘手的问题,web页面老是解析不了,tomcat的log中报错如下:
An error occurred at line: 22 in the jsp file: /admin/UserList.jsp Generated servlet error: D:\Java\tomcat-5.0.30\work\Catalina\localhost\startshop\org\apache\jsp\admin\UserList_jsp.java:68: -source 1.3 中不支持泛型 (请使用 -source 5 或更高版本以启用泛型) List<User> users = new ArrayList<User>(); ^ 1 错误
对开发环境检查了个遍,从开发所用JDK到编译时采用的JDK再到环境变量等一一
检查,始终找不到哪里冒出了个JDK 1.3。由此怀疑应该是tomcat的问题。便在网上搜索,基本明白是
Tomcat版本的问题。这里特转抄 DIY部落(
http://www.diybl.com/course/3_program/java/javajs/20071111/85295_2.html) 的一片文章,非常感谢 作者。该作者发现:请求JSP时,Tomcat日志显示“javac: 目标版本 1.3 与默认的源版本 1.5 冲突”。查看错误日志,发现"compilerTargetVM=1.3",应该时Tomcat的JSP编译时使用的JDK1.3的版本。(我的日志中没有这么明显的错误提示)。进行如下修改:找到tomcat conf目录下的web.xml,将这段内容:
<servlet> <servlet-name>jsp</servlet-name> <servlet-class>org.apache.jasper.servlet.JspServlet</servlet-class> <init-param> <param-name>fork</param-name> <param-value>false</param-value> </init-param> <init-param> <param-name>xpoweredBy</param-name> <param-value>false</param-value> </init-param> <load-on-startup>3</load-on-startup> </servlet>
改成下列的配置:
<servlet> <servlet-name>jsp</servlet-name> <servlet-class>org.apache.jasper.servlet.JspServlet</servlet-class> <init-param> <param-name>compilerSourceVM</param-name> <param-value>1.5</param-value> </init-param> <init-param> <param-name>compilerTargetVM</param-name> <param-value>1.5</param-value> </init-param> <init-param> <param-name>fork</param-name> <param-value>false</param-value> </init-param> <init-param> <param-name>compiler</param-name> <param-value>modern</param-value> </init-param> <init-param> <param-name>xpoweredBy</param-name> <param-value>false</param-value> </init-param> <load-on-startup>3</load-on-startup> </servlet>
修改之后重启tomcat就可以了。
这里偶用的是tomcat 5.0.30,该作者也是。该作者还特意换成tomcat 5.5.0,发现没有出现上述问题,检查conf下面的web.xml文件可以发现区别所在。
本文出自 “追求架构 梦想生活” 博客,请务必保留此出处http://nihaiou.blog.51cto.com/790190/284227