今天碰到了一個棘手的問題,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