环境:本次使用Tomcat7
工具:eclipse
Myeclipse控制台Console中显示的错误信息:
严重: Servlet.service() for servlet jsp threw exception
org.apache.jasper.JasperException: Unable to compile class for JSP:
An error occurred at line: 23 in the generated java file The method
getJspApplicationContext(ServletContext) is undefined for the type
JspFactory Stacktrace:
at org.apache.jasper.compiler.DefaultErrorHandler.javacError(DefaultErrorHandler.java:118)
at org.apache.jasper.compiler.ErrorDispatcher.javacError(ErrorDispatcher.java:230)
at org.apache.jasper.compiler.JDTCompiler.generateClass(JDTCompiler.java:369)
at org.apache.jasper.compiler.Compiler.compile(Compiler.java:256) at
…(此处省略n行)
at java.lang.Thread.run(Thread.java:589)
- 出错原因:
项目包中存在与tomcat7的lib中同样的包,例如jsp-api.jar servlet-api.jar(一般都是这两个包),
在运行的时候,会优先加载项目中的包,而项目包中的.jar版本可能和我们所需要的版本不符,所以会产生错误。 - 解决方案:
把项目中和tomcat相同的包删除,注意必须是删除哦,如果只替换还可能会产生其他的错误。用心的童鞋可以进行备份。一般删除jsp-api.jar servlet-api.jar两个文件就可以解决。
这里想要强调的是,一定要找到项目对应文件包路径。
我本次的项目文件为intelagr,而jar包存在的路径为:
而不是我的项目工作路径:
注意:
一般在控制台中会提示出错文件的具体路径,我们根据控制台中提示的路径,找到对应文件夹即可。
要记得在jdk的安装包下,也要将上述.jar文件删除哦(备份以防万一)!
完成上述操作,我们利用ALT+F5对maven项目进行刷新,刷新后即可运行。运行可能会出现如下提示:
如果你也出现了如上提示,直接忽略即可。如果没有错误 ,我们的程序是可以正常运行哒。



